在向window对象添加新属性时收到通知 - js

时间:2014-09-05 23:25:50

标签: javascript javascript-events window

我需要听一些事件(如果它当然存在),以了解何时将新属性添加到window对象。这可能吗?

例如:

我在应用程序中有一个代码,它不知道某个库暴露了什么全局变量(例如,下划线.js暴露全局_而不是underscore)。我需要通知我已将新属性分配给window

1 个答案:

答案 0 :(得分:1)

有两种方法可以尝试这样做,但两种方法都不是很好。

  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);
    
    })();
    
  2. 您可以使用ES7的Object.observe方法。不幸的是,目前只有Chrome支持它(在实验标志后面)。

  3. 一旦您确定使用其中一种方法进行了更改,您就会生成代码正在侦听的事件。