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! :)