Как работает JavaScript? - PullRequest
0 голосов
/ 03 мая 2018

Я думаю, что мой вопрос уже ответил, но я не смог найти ответ, который удовлетворил бы меня.

Проблема в том, что

Код печатает «3», но я не понимаю, как это может быть, потому что сначала человеку присваивают список [0], затем я реализую person.ID, так что специальность javascript обеспечивает это. Можете ли вы объяснить мне

var person = {};
person.name = "John";
person.surname = "Connor";
var list = [];
list [0] = person; //In here i did not generate ID 
person.ID = 3;
console.log(list[0].ID);

1 Ответ

0 голосов
/ 03 мая 2018

Оператор list [0] = person; загружает ссылку на объект (person) в первый индекс массива.

Таким образом, любая модификация объекта также обновляет объект внутри списка и наоборот. потому что объекты передаются как ссылки, а не как значения.

, поэтому после этой person.ID = 3; консоли первого индекса также выведите 3.

Если вы хотите избежать этого, вы можете сделать копию объекта, прежде чем вставлять в массив.

Для копирования вы можете использовать Object.assign({},person), который делает поверхностную копию объекта

Теперь следующий код не печатает 3.

var person = {};
person.name = "John";
person.surname = "Connor";
var list = [];
list [0] = Object.assign({},person); //In here i did not generate ID
person.ID = 3;
console.log(list[0].ID);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...