在 JavaScript 中,我可以使用
有没有更优雅的方法来做这件事?其中一个缺点是,我不能在同一属性上两次调用
我能否以某种方式使用代理?我觉得我必须创建一个针对window对象的代理...那有效吗?
Object.defineProperty
来检测全局变量 foo
是否被设置(假设它最初为未定义状态)。var foo_;
Object.defineProperty(window, 'foo', {
get: function() {
return foo_;
},
set: function(newFoo) {
console.log('foo set to ' + newFoo);
foo_ = newFoo;
}
});
有没有更优雅的方法来做这件事?其中一个缺点是,我不能在同一属性上两次调用
Object.defineProperty
。为了检测它何时被定义,覆盖整个属性似乎有点过头了。我能否以某种方式使用代理?我觉得我必须创建一个针对window对象的代理...那有效吗?
window[foo]
。 - techie_28Promise
。 - 4castleObject.defineProperty
。 - John Hoffmanwindow.x
、self['y']
等访问表达式。它甚至可以在所有其他类型的表达式中使用window/self/...
时记录警告。 - Tamas Hegedus