向窗口对象-js添加新属性时得到通知
Get notified when added new property to window object - js
我需要监听一些事件(当然如果它存在的话),以了解何时向window
对象添加了新属性。这可能吗?
例如:
我在应用程序中有一段代码不知道某个库公开了什么全局变量(例如underscore.js,它公开了全局_
而不是underscore
)。需要通知我新的属性已分配给window
。
有两种方法可以尝试做到这一点,但都不是一个好的选择。
-
可以使用
setInterval
检查对window
对象的更改。这将是缓慢的,并且从向window
添加新属性到您的代码注意到它之间会有一段延迟。以下是一些代码,显示了一种方法:http://jsbin.com/vubew/1/edit?js,控制台(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支持它(在实验性标志后面)。
一旦您确定其中一个方法发生了更改,您就会生成一个代码将要侦听的事件。
相关文章:
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 全局变量和全局对象的属性之间有什么区别吗
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 序列化数据属性中对象的最可靠方法
- 分析高度属性时出现意外值{{specs.height}}.index.html
- TypeError:无法读取属性'推'未定义的JavaScript
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- AngularJS-使用'true'属性
- 可以't使用JavaScript获取width属性
- 将属性设置为未定义时未通知观察者
- 聚合物中的“观察者”与“通知”(在属性块中)与“观察者”与“侦听器”之间的区别
- 如何忽略角度形式的属性更改通知
- TypeError:无法读取属性'通知'的未定义
- Ember通知出错可以't读取属性“t”;“服务”;的未定义
- 向窗口对象-js添加新属性时得到通知
- 当视图模型属性改变复选框值时被通知
- notifyPropertyChange不通知绑定的属性链
- Azure移动服务推送磁贴通知和清除磁贴属性
- 使用prototype's listeners属性的Listening children'的属性更改通知