出于安全目的,我需要一个“镜像”对象。也就是说,如果我创建对象 A,并浅克隆 A 的副本并将其称为 B,则每当 A 的属性发生更改时,我希望 B 自动更新自身以反映更改,但反之则不然。换句话说,单向属性同步。
我的问题:是否已经存在我不知道的解决方案?
正在考虑用observe-js 实现一个库(https://github.com/polymer/observe-js https://github.com/polymer/observe-js),但我想我应该在继续之前询问一下。谢谢。
假设您不需要支持 IE8 及更早版本,您可以在现代浏览器上使用 getter 来实现这一点。
function proxy(src) {
var p = {};
Object.keys(src).forEach(function(key) {
Object.defineProperty(p, key, {
get: function() {
return src[key];
}
});
});
return p;
}
var a = {
foo: "Original foo",
bar: "Original bar"
};
var b = proxy(a);
console.log(b.foo); // "Original foo"
a.foo = "Updated foo"; // Note we're writing to a, not b
console.log(b.foo); // "Updated foo"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)