Object.prototype.watch()已贬值,然后查看polyfill here
我写了一个代码。
Object.defineProperty(Object.prototype, "watch", {
enumerable: false
, configurable: true
, writable: false
, value: function (prop, handler) {
let
oldval = this[prop],
newval = oldval,
getter = function () {
return newval;
},
setter = function (val) {
oldval = newval;
return newval = handler.call(this, prop, oldval, val);
};
Object.defineProperty(this, prop,
{
get: getter,
set: setter
});
}
});
var o = { p: 1 };
o.watch('p', function (id, oldval, newval) {
console.log('o.' + id + ' changed from ' + oldval + ' to ' + newval);
return newval;
});
o.watch('p', function (id, oldval, newval) {
console.log('o.' + id + ' changed from ' + oldval + ' to ' + newval);
return newval;
});
o.p = 2;
o.p = 3;
似乎,它不允许对同一对象进行多次监视/观察,但是,在许多情况下,我需要从多个组件“数据绑定”到同一对象(实例)的相同属性,并且需要传播数据更改。
有什么办法可以修改上面的代码?
我知道有一些库等,但是我喜欢这样的最少代码,因此我想知道哪种代码可以允许Object.watch
在JavaScript中的同一对象上多次注册。\ < / p>
谢谢。