我正在尝试创建一个对象关系,其中object2的nextString
属性将镜像对object1的originalString
的任何更改。
var object1 = {
nestedObject: {
originalString: "old"
}
}
var object2 = {
nextString: object1.nestedObject.originalString
}
object1.nestedObject.originalString = "new";
originalString现在是“new”但nextString仍然是“旧”
我已经读过这是由于字符串的副本,因为JS不像C那样使用pass-by-reference。
上面的object1和object2之间的示例关系,有没有办法实现我想要的?
答案 0 :(得分:2)
Javascript确实使用传递引用,但是当您执行originalString = "new"
时,实际上是在为originalString
提供新引用,因此它不再指向old
值。< / p>
你可以做的是保持对nestedObject
的引用,因为对象没有被重新分配,只有在其中的字符串。
var object1 = {
nestedObject: {
originalString: "old"
}
}
var object2 = {
// Hold a reference to the nestedObject
nestedObject: object1.nestedObject,
}
// Assign a new value
object1.nestedObject.originalString = "new";
// Both objects will reflect the change
console.log(object1.nestedObject.originalString);
console.log(object2.nestedObject.originalString);