[英]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.