javascript - 有没有办法检测对象的属性何时发生更改?

标签 javascript oop

如何在 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/

相关文章:

在构造函数中创建 JavaScript 原型(prototype)

vb.net - 仅反射(reflect) VB.NET 上派生类的子属性

javascript - VueJS : v-for with dynamic component strange behavior

c++ - 如何在使用合成时使用默认构造函数

javascript - 切换到深色模式时更改 theme_color

javascript - 等高列不适用于调整大小事件

c++ - 在模板类中设置动态构造函数参数的方法

php 对象在构造函数中定义和设置属性

javascript - 如果这些字符串包含 div 中的页面,我需要显示模式

javascript - 在 javascript 库中使用 JSON 配置文件