Я очень озадачен ссылками на Javascript.Я понимаю, что при ссылке на объект, есть ссылка сделана.Смена родительского элемента приводит к изменению копии, и наоборот.
Что меня смущает, так это то, что когда изменения в назначении вносятся в родительский объект, копия сохраняет все.См. Мой пример
let tester = {
"hello": "how are you",
"myArrayHere": [
{ "id": 1, "name": "me" },
{ "id": 2, "name": "you" },
{ "id": 3, "name": "them" },
]
};
var something = tester.myArrayHere.find(x => x.name === "you");
console.log(something);
console.log("--------");
something.id = 99;
console.log(something);
console.log("--------");
console.log(tester.myArrayHere[1]);
console.log("--------");
tester.myArrayHere[1].id = 88;
console.log(something);
console.log("--------");
tester.myArrayHere[1] = {};
console.log(tester.myArrayHere[1]);
console.log("--------");
console.log(something)
Если вы запустите этот пример, something
в последней строке по-прежнему будет иметь весь объект, даже если двумя строками выше, его ссылка была переназначена.
Существуют и другие примеры этого, например, когда вы удаляете вещи из родительского объекта и т. Д. Если это чисто ссылка, а не копия (например, с примитивными типами), почему эти изменения не влияют на него должным образом?