¿El objeto copiado a la segunda propiedad mediante referencia persiste incluso después de eliminar la propiedad original?
Pensé que los objetos se pasan como referencia. Pero cuando borrob
, todavía existe enc
. Por favor vea este ejemplo:
Esta primera parte tiene sentido para mí, ya que se pasa por referencia:
var a = {b: {val:true}};
a.c = a.b;
a.b.val = 'rawr';
console.log(uneval(a)); // outputs: "({b:{val:"rawr"}, c:{val:"rawr"}})"
Ahora esta parte no tiene sentido para mí:
var a = {b: {val:true}};
a.c = a.b;
a.b.val = 'rawr';
delete a.b;
console.log(uneval(a)); // outputs: "({c:{val:"rawr"}})"
entoncesb
la propiedad se elimina, peroc
La propiedad contiene las propiedades a las que se hace referencia antes de eliminar. ¿Es esto un error en JavaScript?
editar: gracias a todas las respuestas! así que no es un error, y este comportamiento es realmente muy bueno, ¡permite a las personas cambiar los nombres de "clave" / "propiedad" mientras retienen el objeto! :)