如何在 Javascript 中检测对象的属性是否已更改?我特别希望在对象的属性数量发生变化时调用函数(无论是获得还是丢失属性)。我想避免使用方法并设置和更改对象的属性,因为这会很快变得相当笨拙,并且 setInterval
显然不是一个选项。那么,这可能吗?
编辑:我专门寻找一种通过 length
属性获取对象属性长度的方法,类似于 Array 对象上的属性。我假设每当添加或删除索引时他们都会更改长度,但显然情况并非如此。 Javascript 的原始设计者是如何做到这一点的?
最佳答案
嗯,常见的方法是使用 getter 和 setter 类型的函数来执行此操作,类似于 Backbone 对模型的处理方式。您通过函数修改数据,然后函数在执行您想要执行的操作之前执行其他处理(例如执行监听器、检查属性等)。
function ListenableObject(data){
var that = this;
this.data = data;
this.listeners = [];
this.edit = function(newvalues){
//modify data
//execute listeners
}
this.addListener = function(callback){
that.listeners.push(callback);
}
}
var mydata = new ListenableObject({'foo':'bar'});
mydata.addListener(function(){...callback...});
mydata.edit(somedata);
关于javascript - 有没有办法检测对象的属性何时发生更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10584433/