#javascript #object
#язык JavaScript #объект
Вопрос:
Я изучаю Javascript, основываясь на своих знаниях о том, что ссылочный тип, подобный объекту ниже, создается в куче и указывает на новый фрагмент памяти в стеке. Но что произошло, когда я попытался объявить такой объект:
let object = { id: 1223, title: 'test' };
и когда я переназначил его:
object = { newId: object.id, newTitle: object.title };
Я получил:
object = { newId: 1223, newTitle: 'test' };
Мне так любопытно, почему это возможно, Исчезло ли имя свойства, когда я переназначил объект? и как это работает за экраном?
Пожалуйста, дайте мне некоторые пояснения, ключевые слова или документы.
Большое спасибо.
P/s. Что-то я забыл, так это то, что =
ассоциативность оператора происходила справа налево, поэтому объект в этот момент не мутировал, пока выполнение не соответствовало =
. Может быть, это как-то ответ на мой вопрос.
Комментарии:
1. Чего ты не понимаешь? Вы создали новый объект и ссылались на старый объект при его создании.
2. Чего вы ожидали вместо полученного результата?
3. Переменная
object
не переназначается до тех пор, пока не будет вычислено выражение со значением. Вот почему вы можете ссылаться на свойства старого объекта.4. «переназначать объект в JS нежелательно» — вы не переназначаете объект, вы переназначаете переменную. Это происходит все время, в этом нет ничего плохого.
5.@Phucq.ins Это может быть связано с отсутствием разметки, но объект никогда не мутирует (свойства не изменяются), переменная
object
переназначается/перезаписывается. Обратите внимание, что ваш код создает два отдельных объекта.