我只是努力寻找一种通用的解决方案来观察或观察JavaScript中的数据结构。有多种方法可以做到这一点:
ObservableList
。Object.defineProperty(obj, 'text', { set: function(t) { this.text = t; console.log('changed') } });
:Mozilla API - overwrite setter。因此,如果某人设置了对象的属性,则可以发出事件或调用函数,如果有人obj.text = 'Hallo'
。Object.observe(obj, callback)
,但这在大多数浏览器中都不起作用。obj.watch('text', callback)
,但这只适用于Gecko浏览器。 我个人更喜欢第三种方法;覆盖属性的setter方法。但这种方式有一个小问题。我无法观看数组修改(obj.arr[2]='What?'
)。也许有其他事情做得不好我还没想到。
我在这里看到的另一个问题是,实际上没有框架可以为我抽象一切。并且没有框架可以为我深入监视数据结构,例如:带有对象的数组的对象。
或者有这样的框架,但我没有找到它。