【问题标题】:Bind object properties to another object's properties将对象属性绑定到另一个对象的属性
【发布时间】:2020-06-22 02:32:26
【问题描述】:

我想创建一个新对象,为它的属性分配来自另一个对象的一些值,我想“绑定”它 - 就像在 C++ 中通过引用传递一样。

所以在下面这个例子中:

var object1 = {
    'obj1' : {
    'obj1a' : 'a',
    'obj1b' : 'b'
  },
  'obj2' : {
    'obj2c' : 'c',
    'obj2d' : 'd'
  }
}

var assignObject = {}
assignObject['obj1a'] = object1['obj1']['obj1a']
assignObject['obj1a'] = 'bbb'

console.log('assignObject' + JSON.stringify(assignObject))
console.log('object1' + JSON.stringify(object1))

每当我修改assignObject['obj1a'] 的内容时,我希望它也反映在object1['obj1']['obj1a'] 上。

var assignObject = {}
assignObject['obj1a'] = object1['obj1']['obj1a']  // this is my idea of 'binding'
assignObject['obj1a'] = 'bbb'  // and updating of assignObject['obj1a']

控制台打印:

assignObject{"obj1a":"bbb"}
object1{"obj1":{"obj1a":"a","obj1b":"b"},"obj2":{"obj2c":"c","obj2d":"d"}}

我希望它打印出来:

assignObject{"obj1a":"bbb"}
object1{"obj1":{"obj1a":"bbb","obj1b":"b"},"obj2":{"obj2c":"c","obj2d":"d"}}

如何在 Javascript 中做到这一点?请注意,会有多个参数,并且它们在实际代码中是动态的(未定义深度嵌套对象)。

这是小提琴: https://jsfiddle.net/ha2qcdko/

谢谢!

【问题讨论】:

  • 是的,不会发生那样的事情。您可能想考虑将obj1a 定义为assignObject 上的getter,以便在每次访问时重新评估其值...?

标签: javascript node.js object javascript-objects


【解决方案1】:

如果您获得object 参考,它将按您的预期工作:

const object1 = {
  'obj1' : {
    'obj1a' : 'a',
    'obj1b' : 'b'
  },
  'obj2' : {
    'obj2c' : 'c',
    'obj2d' : 'd'
  }
}

let assignObject = object1.obj1;
assignObject.obj1a = "bbb";

console.log(object1);

但是一旦你的参考是object1['obj1']['obj1a'],那不再是object,而是string

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-13
    • 2011-10-03
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 2020-12-07
    • 1970-01-01
    相关资源
    最近更新 更多