【问题标题】:Get notified when added new property to window object - js向窗口对象添加新属性时收到通知 - js
【发布时间】:2014-09-05 23:25:50
【问题描述】:

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

例如:

我在应用程序中有一个代码不知道某些库公开了哪些全局变量(例如,underscore.js 公开了全局 _ 而不是 underscore)。我需要收到通知,新属性已分配给 window

【问题讨论】:

    标签: javascript window dom-events


    【解决方案1】:

    有两种方法可以尝试,但都不是很好的选择。

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

    一旦您确定其中一种方法发生了变化,您就会生成一个您的代码将要监听的事件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-04
      • 2015-06-13
      • 1970-01-01
      • 2018-07-27
      • 2016-09-25
      • 2016-04-05
      • 2018-03-27
      • 2014-07-16
      相关资源
      最近更新 更多