检测 Javascript 对象的变化

24

我发现这个代码片段可以检测一个对象中指定字段的变化: https://gist.github.com/3138469

但它只在一个字段上绑定了事件。

有人知道检测整个JavaScript对象变化的函数或技巧吗?


2
我喜欢使用Watch.js。你问题中的那个代码片段是来自Watch.js吗? - Adi
哎呀,非常感谢您提供这个惊人的要点!请发布答案,我会接受它。谢谢! - Unitech
3个回答

26

2019更新: 现在可以使用Proxy API更高效的实现此功能。而on-change库使用了Proxy API来使其更加简单易用。

2012更新: 我刚注意到Watch.js作者提到了一个支持范围更广的库。MultiGetSet.JS

当我想实现这个功能时,通常会使用Watch.js,你可以监视整个对象或一个属性。


感谢您两次更新此答案,尽管上一次已经过去了大约8年。像您这样的人使SO变得有价值。✌️ - aderchox

3
目前还不可能实现,你只能为单个属性定义getter/setter。
然而,有一个Proxy对象的草案可以做到这一点。但是,它目前只在Firefox的Javascript 1.8.5中得到支持

2

使用watch.js无法实现此功能。它只能检测对象或对象属性的更改,但它不能检测我们是否向对象添加了属性或更改了新添加的属性...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接