logicface
@logicface
Начинающий

Как правильно воспроизвести функциональное создание взаимосвязанных объектов в JS?

Учу JS по современному учебнику JS (дошел до 176 страницы) и впал в ступор. Хотел понять как работает функция в теме про очистку мусора и не смог руками создать взаимосвязанные объекты как в ней. То есть вообще не понял я как она это делает. Можете (если не лень) написать код, который генерирует функция и немного подробнее описать для меня как она работает по шагам - то есть что создает в начале как это все вкладывает друг в друга. Отладчиком я пользоваться пробовал но там какая-то зацикленность происходит вложенности, не понятно все равно как это руками сделать в одном объекте. Привожу пример кода и того (ниже комментариев, что пытался изваять я).

"use strict"

function marry(man, woman) {
    woman.husband = man;
    man.wife = woman;
    return {
        father: man,
        mother: woman
    }
}
let family = marry({
    name: "John"
}, {
    name: "Ann"
});

console.log(family);

// Не знаю как верхнее написать руками. Нижнее - то, что пытался сделать я.

let family2 = {
    father: {
        name: "John",
        wife: mother,
    },
    mother: {
        name: "Ann",
        husband: father,
    }
}
  • Вопрос задан
  • 105 просмотров
Решения вопроса 1
XanXanXan
@XanXanXan
Нельзя обратиться к объекту, пока он не создан. Поэтому внутри объекта не получится сделать wife: mother, т.к. объект mother ещё не существует. А функция работает с уже созданными объектами:
spoiler
const father = {
    name: "John",
}

const mother = {
    name: "Ann",
}
  
father.wife = mother;
mother.husband = father;

const family = {father, mother}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Есть функция marry котороя принимает два аргумента(man и woman), в теле функции для woman присваивается свойство husband(Ссылка на объект man),а для man свойство wife(Ссылка на объект woman), после чего функция возвращает новый объект в котором свойство father ссылается на объект man,а mother на объект woman. Потом переменной family присваиваивается объект созданный результатом выполенения функции marry.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы