JavaScript 对象镜像/单向属性同步

标签 javascript object.observe

出于安全目的,我需要一个“镜像”对象。也就是说,如果我创建对象 A,并浅克隆 A 的副本并将其称为 B,则每当 A 的属性发生更改时,我希望 B 自动更新自身以反射(reflect)更改,但反之则不然。换句话说,单向属性同步。

我的问题:是否已经存在我不知道的解决方案?

正在考虑使用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"

关于JavaScript 对象镜像/单向属性同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26183148/

相关文章:

javascript - 从服务器发送媒体流到客户端

javascript - 在 IE 9 的 contentEditable DIV 中禁用 <img> 选择和调整大小

javascript - 使用更改观察者观察 Object.observe() 下的原生​​属性

javascript - 使用 AngularJS 1.x 使用 Object.observe 代替脏检查

javascript - 如何在 map 上使用 Object.observe?

Python:从 ipywidgets.observe() 而不是 3 获取单个信号

javascript - Leaflet - 从静态文件和 API 调用中获取数据以构建分区统计图

javascript - 使用 NextJS 静态预渲染最流行的查询

javascript - 类型错误 : Object function Object() { [native code] } has no method 'observe'

javascript - 如何将点击图像的名称传输到另一个 php 页面?