我想创建一个新对象,从另一个对象分配其属性一些值,然后想“绑定”它-就像在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/
谢谢!
答案 0 :(得分: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
。