我需要听一些事件(如果它当然存在),以了解何时将新属性添加到window
对象。这可能吗?
例如:
我在应用程序中有一个代码,它不知道某个库暴露了什么全局变量(例如,下划线.js暴露全局_
而不是underscore
)。我需要通知我已将新属性分配给window
。
答案 0 :(得分:1)
有两种方法可以尝试这样做,但两种方法都不是很好。
您可以使用window
检查setInterval
对象的更改。这将很慢,并且在将新属性添加到window
和代码注意到它之间会有延迟。以下是一些显示一种方式的代码:http://jsbin.com/vubew/1/edit?js,console
(function(){
'use strict';
var keys = Object.keys(window).join();
setInterval(function(){
var newKeys = Object.keys(window).join();
if (newKeys !== keys) {
console.log('`window` changed');
keys = newKeys;
}
}, 100);
})();
您可以使用ES7的Object.observe
方法。不幸的是,目前只有Chrome支持它(在实验标志后面)。
一旦您确定使用其中一种方法进行了更改,您就会生成代码正在侦听的事件。