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

题目描述

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

题目来源及自己的思路

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

相关代码

例如:

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

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

已解决 悬赏分:0 - 解决时间 2021-11-28 18:58
反对 0举报 0 收藏 0

回答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来实现也是一样的

    支持 0 反对 0 举报
    2021-11-28 08:54