let man = { // Создаем объект "мужчина"
name: 'John' // Имя
};
let woman = { // Создаем объект "женщина"
name: 'Ann' // Имя
};
woman.husband = man;
// Создаем свойство "муж" в объекте женщины и присваиваем ему ссылку на объект мужчины
man.wife = woman;
// Создаем свойство "жена" в объекте мужчины и присваиваем ему ссылку на объект женщины
let family = { // Создаем объект "Семья"
father: man, // Тут же создаем свойство "отец" и присваиваем ему ссылку на мужчину
mother: woman // Создаем свойство "мать" и присваиваем ему ссылку на женщину
}
/*
В итоге, вышло как-то так:
family = {
father: { // На самом деле, тут ссылка на объект мужчины
name: 'John',
wife: woman // Тут ссылка на объект женщины
},
mother: { // На самом деле ссылка на объект женщины
name: 'Ann',
husband: man // Ссылка на объект мужчины
}
}
*/
// Дальше...
delete family.father; // Удаляем из объекта семьи ссылку на объект отца, то есть мужчины
/*
Вышло:
family = {
// Тут был father (man), но мы его удалили
mother: {
name: 'Ann',
husband: man // Но тут осталась ссылка на man
}
}
*/
// А теперь...
delete family.mother.husband;
/*
В конечном итоге:
family = {
mother: {
name: 'Ann'
// Теперь тут тоже ничего. На объект мужчины никто не ссылается, теперь он считается мусором
}
}
*/
Потому что одно из значений свойства transform может измениться