Как избежать привязки объекта в JS? - PullRequest
0 голосов
/ 30 сентября 2018

Я не уверен, что происходит с этим, возможно, я делаю что-то не так, но, честно говоря, я не вижу смысла.Просто посмотрите на этот код и посмотрите, что происходит:

var object = {
  one: "one",
  two: "two"
};

var object2 = {}

object2 = object;

object["three"] = "what?"

console.log(object2);

Выход для object2 должен быть {one: "one", "two": two"}, однако он возвращает {one: "one", "two": two", "three": "what?"}

Так почему этопроисходит?Я не изменяю object2, но он обновляется после нажатия нового значения.Как я могу решить это?Я просто хочу сохранить object2 как раньше.Спасибо

Ответы [ 2 ]

0 голосов
/ 30 сентября 2018

Когда вы назначаете объект для object2, это ссылка на object2.Следовательно, когда вы добавляете «три»: «что?»к объекту и распечатать object2, это будет то же самое.

0 голосов
/ 30 сентября 2018

объект2 ссылается на объект (указывает на ту же ссылку в памяти)

я предполагаю, что вы хотите создать объект2, который является копией первого, который вы можете сделать следующим образом:

var obj2 = Object.assign({}, object);

или

var obj2 = {...object}

Вы можете проверить Объект присваивать MDN или просто гуглить о синтаксисе оператора распространения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...