簡體   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