Я думал, что объекты передаются как ссылка. Но когда я удаляю b
, он все еще существует в c
. См. Этот пример:
Эта первая часть имеет смысл для меня, поскольку она передается по ссылке:
var a = {b: {val:true}};
a.c = a.b;
a.b.val = 'rawr';
console.log(uneval(a)); // outputs: "({b:{val:"rawr"}, c:{val:"rawr"}})"
Теперь эта часть не имеет для меня смысла:
var a = {b: {val:true}};
a.c = a.b;
a.b.val = 'rawr';
delete a.b;
console.log(uneval(a)); // outputs: "({c:{val:"rawr"}})"
поэтому свойство b
удаляется, но свойство c
содержит свойства, на которые ссылаются перед удалением. это ошибка в javascript?
изменить: спасибо всем ответам! поэтому это не ошибка, и это поведение на самом деле очень хорошо, это позволяет людям изменять имена "ключ" / "свойство" при сохранении объекта!:)