我只是想弄清楚他的工作原理,但这种情况让我很困惑。
Object.defineProperty(Object.prototype, 'a', {set: function() {console.log("Set!");} });
使用该方法,我假设任何时候创建一个名为的对象时,该函数都应该激发。它在这里工作:
a = {};
Set!
但不是这样嵌套的:
test = {a:{}};
我是不是误解了什么?
对象文字{a: …}
正在创建一个具有自己属性的新对象。它不为属性创建调用任何继承的setter,部分原因是为了防止JSON劫持。
但是,以下代码将具有所需的行为:
test = {};
test.a = {};