JS объекты. Вложенные объекты. Изменение свойства
let animal1 = {
eats: true,
}
let animal2 = {
eats: true,
test: '3',
obj: animal1,
}
animal1 = {
eats: false,
}
console.log(animal2.obj) // true
Пожалуйста объясните как это работает. Понимаю, что если делать так
animal1.eats = false то всё работает. Но очень хочу понять почему не работает по другому.
Ответы (1 шт):
Автор решения: IvaMuxa
→ Ссылка
let animal1 = {
name: "заяц",
}
let animal2 = {
name: 'волк',
food: animal1, // заяц
}
// сейчас у нас два указателя на объект "заяц";
console.log(animal1.name) //заяц
console.log(animal2.food.name) //заяц
//если вы будете изменять любые свойства первого объекта не меняя
// сам объект то свойства объекта вложенного во второй объект
// так же будут меняться
animal1.name = "гусь";
// мы не меняли объект а только изменили его свойства
console.log(animal1.name) //гусь
console.log(animal2.food.name) //гусь
animal1 = {
name: "черепаха"
}
//а здесь мы переопределили переменную animal1 теперь это другой объект;
console.log(animal1.name) //черепаха
console.log(animal2.food.name) //гусь
//при этом ссылка внутри второго объекта по прежнему указывает
// на объект который мы присвоили ей изначально