2017-03-11 7 views
0

lassen Sie uns ein Beispiel sehen:erklären JavaScript-Objekt Zuordnung

let object = { 
    a: { 
     b: 1 
    } 
}; 

Jetzt möchte ich die object.a von x ändern:

S.1)

let x = object.a; 
x = 2; 

console.log(object); 

Ergebnis:

[object Object] { 
    a: [object Object] { 
    b: 1 
    } 
} 

S.2

let x = object.a; 
x = { b: 2 }; 

console.log(object); 

Ergebnis:

[object Object] { 
    a: [object Object] { 
    b: 1 
    } 
} 

s.3

let x = object.a; 
x.b = 2; 
x.c = 2; 

console.log(object); 

Ergebnis:

[object Object] { 
    a: [object Object] { 
    b: 2, 
    c: 2 
    } 
} 

Warum s.1 und s.2 scheitern?

Antwort

0

In S1 und S2 ändern Sie den Wert von X für neue Werte/Objekte. Der Verweis auf "Objekt" wird unterbrochen und ein neuer Zeiger zugewiesen. Daher ändern Sie das ursprüngliche Objekt nicht mehr.

In S3 ändern Sie jedoch die Eigenschaften des vorhandenen Objekts. Die Referenz wird weiterhin beibehalten und daher ändern Sie gleichzeitig die Eigenschaften "object" und "x".