镜像 Javascript 变量变化

Mirror Javascript Variable Changes

我正在尝试创建一个对象关系,其中对象 2 的 nextString 属性 将反映对对象 1 的 originalString.

的任何更改
var object1 = {
    nestedObject: {
        originalString: "old"
    }
}
var object2 = {
    nextString: object1.nestedObject.originalString
}
object1.nestedObject.originalString = "new";

originalString 现在是 "new" 但 nextString 仍然是 "old"

我读到这是由于 JS 不像 C 语言那样使用引用传递而生成的字符串副本。

上面object1和object2的示例关系,有没有办法实现我想要的?

Javascript 确实使用按引用传递,但是当您执行 originalString = "new" 时,您实际上是在分配对 originalString 的新引用,因此它不再指向 old值。

您可以做的是保留对 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);