繁体   English   中英

Javascript:object1 = object2究竟产生了什么?

[英]Javascript: object1 = object2 produce what exactly?

如果我有2种类型的对象:

object1 : {
    value : { foo1: {}, foo2: 5 }, state: true, etc = {}
}

object2 : {
    value : { foo1: { value: 5}, foo2: 6 }, state: true, etc = {}
}

如果我做object1=object2请问在所有级别上object1到底发生了什么。

我将简化一点:

var a = { value: 1, aStuff: true };
var b = { value: 2, bStuff: true };
b = a;
console.log(b); // { value: 1, aStuff: true }

现在, ab引用相同的对象。 可以认为它是同一对象,可以通过两个名称访问。 这意味着当您更改该对象时会发生这种情况:

a.value = 5
console.log(a); // { value: 5, aStuff: true }

两个名字,一个对象。

那么{ value: 2, bStuff: true }对象发生了什么? 一旦告诉b引用了一个不同的对象,则没有现有变量对其进行引用,因此最终垃圾收集器将找到它并对其进行处理。


内部物体会发生什么? 就是那个问题..

没事 外部对象仍保留对其包含的值的引用。 所做的全部更改是,您具有两个指向同一外部对象的变量。

现在object1object2的引用, object1任何更改都会更改object2

var object1 = { foo: 'bar' };

var object2 = {
    value : { foo1: { value: 5}, foo2: 6 }
};

object1 = object2; // the { foo: 'bar' } is gone.

object1.foo2 = 7; //This changes object2.foo2 value
console.log(object2.foo2); //7

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM