Я не уверен, что с этим творится, наверное, я что-то делаю не так, но, честно говоря, не понимаю, в чем смысл. Просто взгляните на этот код и посмотрите, что происходит:
var object = {
one: "one",
two: "two"
};
var object2 = {}
object2 = object;
object["three"] = "what?"
console.info(object2);
Вывод для object2 должен быть {one: "one", "two": two"}, однако он возвращает {one: "one", "two": two", "three": "what?"}.
Так почему это происходит? Я не модифицирую object2, но он обновляется после добавления нового значения. Как я могу это решить? Я просто хочу оставить object2 как раньше. Спасибо



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


object2 ссылается на объект (указывает на ту же ссылку в памяти)
Я предполагаю, что вы хотите создать object2, который является копией первого, что вы можете сделать следующим образом:
var obj2 = Object.assign({}, object);
или
var obj2 = {...object}
вы можете проверить Назначение объекта MDN или просто погуглить о синтаксисе оператора распространения
Теперь работает отлично. Однако не могли бы вы объяснить мне подробнее, почему это произошло? Я до сих пор не могу этого понять. Спасибо!
JS имеет примитивные (Boolean, Number, String, undefined, null) и ссылочные типы (Object, Array, Function). Да, вы также можете обернуть эти примитивы их конструктором, таким как String ('asd'), чтобы он тоже был объектом и вел себя иначе, чем примитивный тип ... В основном, когда вы сказали object2 = {}, в этот момент object2 был совершенно другим объектом , но затем после того, как вы сказали object2 = object, что означает, что он должен указывать на объект, чтобы он содержал ссылку на этот первый объект. Теперь, когда вы меняете orig, изменяется и другой объект, потому что он указывает на тот же самый первый объект, на этот объект obj.
Когда вы назначаете объект object2, ссылка дается на object2. Следовательно, когда вы добавляете «три»: «что?» объекту и печати object2, он будет таким же.
После
object2 = object;обе переменные содержат ссылки на один и тот же объект.