Object|Array.observe() implementation for ECMA 5
Object|Array.observe() implementation for ECMA 5
我发现了新的有用的实验方法(在ECMA 7) Object
和Array
: observe
。通过文档,您可以订阅Object
或Array
中的任何更改。不幸的是,它只能在Chrome 36和Opera 23中使用。
有人知道如何实现其他浏览器的功能(对于支持ECMA 5的浏览器)吗?
可以使用Object.defineProperty
基本上,您可以使用类似于下面的代码重新定义要监视的属性的set和get方法:
Object.defineProperty(obj, propertyName, {
configurable: true,
enumerable: true,
set: function(val) {
notifyAll(val); // This is a custom function to notify
// the new value to all the listeners
value = val;
},
get: function() {
return value;
}
});
例如
var obj = {};
Object.defineProperty(obj, 'name', {
configurable: true,
enumerable: true,
set: function(val) {
console.log('Changed name to: ' + val);
value = val;
},
get: function() {
return value;
}
});
obj.name = 'pippo'; // Logs Changed name to pippo
obj.name = 'pluto'; // Logs changed name to pluto
console.log(obj.name); // Logs pluto
相关文章:
- 为什么JavaScript在for循环为3时向所有4发出警报
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- Is onfling available for html, html5
- Setting default onclick behavior for <img> tag in gene
- 我的javascript for循环不起作用
- For循环冻结Javascript
- 如何在for循环中添加事件侦听器
- Javascript setTimeout for an array
- 双“for”循环(循环)
- 引用vue.js中v-for中的上一个值
- javascript for循环不起作用
- for循环中的javascript if语句找不到==
- GWT (or javascript) library for couchDB
- Javascript在for循环中等待处理请求
- Livereload for node.js.有可能吗
- jQuery setTimeOut: in for-loop
- 我没有'I don’我不理解for在循环中的用途
- 如何知道javascript for语句中的所有结果是否都是错误的
- For循环在Jquery中只运行一次
- Object|Array.observe() implementation for ECMA 5