javascript - 镜像 Javascript 变量更改

标签 javascript object reference pass-by-reference

我正在尝试创建一个对象关系,其中 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/

相关文章:

c++ - 语法 `const char (&x)[]` 的含义

javascript - Impress.js 和使用 HTML5 数据属性代替 CSS 转换

javascript - AngularJS:请求的资源上不存在 "Access-Control-Allow-Origin" header

java泛型方法

javascript - JSON Object javascript,如何获取值而不是键

java - 常见的 Java 内存/引用泄漏模式?

javascript - Node.js 中的语法 () => {} 是什么意思

javascript - 真实用户监控 : Standards for reliability

oop - SWI-Prolog 中的面向对象编程

java - 如何检索存储在 LinkedList 中的对象的字段值?