JavaScript 中属性对象的别名

Alias for attribute object in JavaScript

我想知道 Js 中是否存在像其他语言中那样 "redefines var or object" 的东西。有点像 "alias"

例如 我有一个对象

var obj1 = new Object();

这有属性 attr1 和 object2。

obj1.attr1 = 'a';
obj1.obj2 =  new Object();

我有没有可能 'alias_attr1' 和 'alias_obj1' 并且它们都与 attr1 和 obj2 相同?

谢谢

如果我没记错的话,对象是通过引用传递的,但如果您不克隆它,它们将引用同一个对象。原语不是。因此,如果您有以下条件:

var obj1 = {
    "id" : 7
};
var obj2 = {
    "one" : "a",
    "two" : "a",
    "three" : obj1,
    "four" : obj1
};
console.log(obj2.three === obj2.four) // -- > true

由于 obj1 是一个对象并且您没有克隆它,因此 obj2.three 和 obj2.four 都引用同一个对象。然而,obj2.one 和 object2.two 是字符串,即使它们具有相同的值,它们也不会相互引用。

但不止于此,您可以单独覆盖objs。因此,如果您将 obj1 设置为其他内容,obj2.three 和 obj2.four 仍将包含原始 obj1。 obj1 = 'test'; --> obj2 保持不变。

但是,如果您直接 obj1.id = 8; 或间接 obj2.three.id = 8; 更新 obj1 而不是覆盖它,更改将在 obj2.four 中看到:(obj2.four.id === 8) // --> true

所以它有点复杂,我不是最好的解释者,但是你可以在你最喜欢的搜索引擎上找到很多关于它的博客。