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, abercie 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. :)

Antworten auf die Frage(6)

Ihre Antwort auf die Frage