JavaScript两个不同对象的属性如何建立联系?

题目描述

JavaScript两个不同对象的属性如何建立联系?

题目来源及自己的思路

在处理复杂数据的时候有时候需要提取出某一部分来进行使用,那么如何做到不同对象的属性关联呢?

相关代码

例如:

var a = {'aa':1,'bb':[{'ccc':2,'ddd':[{'eeee':3}]}]};
var b = {'ff':''};

如何让对象b中的ff属性和对象a中的eeee对应起来,即:当eeee的值修改的时候ff的值也修改。同样,当ff的值修改的时候,eeee的值也跟着改变?

阅读 2.7k
1 个回答

可以借助Object.defineProperty直接代理对象属性来实现

var a = {'aa': 1, 'bb': [{'ccc': 2, 'ddd': [{'eeee': 3}]}]};
var b = {};
Object.defineProperty(b, 'ff', {
  set(v) {
    a.bb[0].ddd[0].eeee = v;
  },
  get() {
    return a.bb[0].ddd[0].eeee;
  },
});

b.ff = 123;
console.log('b->', b.ff); // 123
console.log('a->', a.bb[0].ddd[0].eeee); // 123

把这段代码复制到控制台修改b.ff的值就能看到效果
当然,用Proxy来实现也是一样的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题