Objekt, das über die Referenz in die zweite Eigenschaft kopiert wurde, bleibt auch nach dem Löschen der ursprünglichen Eigenschaft bestehen?
Ich dachte Objekte werden als Referenz übergeben. Aber wenn ich @ löscb
, es existiert noch inc
. Bitte sehen Sie dieses Beispiel:
Dieser erste Teil macht für mich Sinn, da er als Referenz übergeben wird:
var a = {b: {val:true}};
a.c = a.b;
a.b.val = 'rawr';
console.log(uneval(a)); // outputs: "({b:{val:"rawr"}, c:{val:"rawr"}})"
Jetzt macht dieser Teil für mich keinen Sinn:
var a = {b: {val:true}};
a.c = a.b;
a.b.val = 'rawr';
delete a.b;
console.log(uneval(a)); // outputs: "({c:{val:"rawr"}})"
sob
Eigenschaft wird gelöscht, aberc
ie Eigenschaft @ enthält die Eigenschaften, auf die vor dem Löschen verwiesen wurde. ist das ein Fehler in Javascript?
edit: danke an alle die antworten! Es ist also kein Fehler, und dieses Verhalten ist tatsächlich sehr gut. Es ermöglicht Benutzern, die Namen von "Schlüsseln" / "Eigenschaften" zu ändern, während das Objekt beibehalten wird. :)