我在 Chrome 中使用 ECMAScript 6 代理(需要“启用实验性 JavaScript”标志)。我在控制台中粘贴了以下代码(取自此处):
var loggable = function(obj, logger) {
return Proxy.create({
get: function get(receiver, prop) {
logger.info('Getting ' + prop);
return obj[prop];
}
});
};
var person = { name: 'Alice', age: 22 };
person = loggable(person, {
info: function info(str) {
console.log(str);
}
});
结果是:
Getting splice
Getting splice
"TypeError"
谁能解释为什么 的splice
属性person
被访问两次,以及为什么我们得到"TypeError"
?