O objeto copiado para a segunda propriedade via referência persiste mesmo após a propriedade original ser excluída?

Eu pensei que os objetos são passados como referência. Mas quando eu apagob, ainda existe emc. Por favor, veja este exemplo:

Esta primeira parte faz sentido para mim como passou por referência:

var a = {b: {val:true}};

a.c = a.b;
a.b.val = 'rawr';

console.log(uneval(a)); // outputs: "({b:{val:"rawr"}, c:{val:"rawr"}})"

Agora, esta parte não faz sentido para mim:

var a = {b: {val:true}};

a.c = a.b;
a.b.val = 'rawr';
delete a.b;

console.log(uneval(a)); // outputs: "({c:{val:"rawr"}})"

tãob propriedade é excluída, masc A propriedade está mantendo as propriedades com as referências antes de excluir. isso é um bug em javascript?

edit: obrigado a todos pelas respostas! portanto, não é um bug, e esse comportamento é realmente muito bom, pois permite que as pessoas alterem os nomes das "chaves" / "propriedades" enquanto mantêm o objeto! :)

questionAnswers(6)

yourAnswerToTheQuestion