我正在尝试创建一个对象关系,其中 object2 的 nextString
属性将镜像对 object1 的 originalString
的任何更改。
var object1 = {
nestedObject: {
originalString: "old"
}
}
var object2 = {
nextString: object1.nestedObject.originalString
}
object1.nestedObject.originalString = "new";
originalString 现在是"new",但 nextString 仍然是“旧”
我读到这是由于 JS 不像 C 语言那样使用引用传递而创建的字符串副本。
根据上面object1和object2之间的示例关系,有没有办法实现我想要的?
最佳答案
Javascript 确实使用引用传递,但是当您执行 originalString = "new"
时,您实际上是在为 originalString
分配一个新引用,因此它不再指向为旧
值。
您可以做的是保存对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);
关于javascript - 镜像 Javascript 变量更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50421887/