0
我需要偵聽某個事件(如果它當然存在),以知道何時將新屬性添加到window
對象。那可能嗎?將新屬性添加到窗口對象時獲得通知 - js
例如:
我在應用程序中的代碼,不知道是什麼全局變量一些庫公開(例如underscore.js暴露出全球_
,而不是underscore
)。我需要被通知新的財產被分配到window
。
我需要偵聽某個事件(如果它當然存在),以知道何時將新屬性添加到window
對象。那可能嗎?將新屬性添加到窗口對象時獲得通知 - js
例如:
我在應用程序中的代碼,不知道是什麼全局變量一些庫公開(例如underscore.js暴露出全球_
,而不是underscore
)。我需要被通知新的財產被分配到window
。
有兩種方法可以嘗試做到這一點,但都不是一個好的選擇。
您可以檢查使用setInterval
更改window
對象。這將會很慢,並且在將一個新的房產添加到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支持它(位於試驗旗後面)。
一旦您確定這些方法之一發生了變化,您將生成一個代碼將監聽的事件。