镜像Javascript变量

时间:2018-05-19 04:51:09

标签: 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那样使用pass-by-reference。

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

1 个答案:

答案 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);