[英]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 }
现在, a
和b
引用相同的对象。 可以认为它是同一对象,可以通过两个名称访问。 这意味着当您更改该对象时会发生这种情况:
a.value = 5
console.log(a); // { value: 5, aStuff: true }
两个名字,一个对象。
那么{ value: 2, bStuff: true }
对象发生了什么? 一旦告诉b
引用了一个不同的对象,则没有现有变量对其进行引用,因此最终垃圾收集器将找到它并对其进行处理。
内部物体会发生什么? 就是那个问题..
没事 外部对象仍保留对其包含的值的引用。 所做的全部更改是,您具有两个指向同一外部对象的变量。
现在object1
是object2
的引用, 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.