foo在 javascript 中,我可以使用以下方法检测何时设置全局变量(假设它最初未定义) Object.defineProperty:
var foo_;
Object.defineProperty(window, 'foo', {
get: function() {
return foo_;
},
set: function(newFoo) {
console.log('foo set to ' + newFoo);
foo_ = newFoo;
}
});
Run Code Online (Sandbox Code Playgroud)
有没有更优雅的方法来做到这一点?一个缺点是我不能Object.defineProperty两次访问同一处房产。仅仅为了检测它的定义时间而覆盖整个属性似乎有点矫枉过正。
我可以以某种方式使用代理吗?我觉得我必须创建一个针对窗口对象的代理......这样有效吗?