Не сильно шарю в js - но это типа примитивного ООП. Крч ты по let family = marry... временно создаешь 2 объекта у которых есть параметры name (но так-то это словарики). Далее ты первому объекту (словарю) устанавливаешь атрибут husband ссылающийся на весь объект (словарик) woman, и наоборот - во второй строчке функции. И возвращаешь father: первый объект (словарь) с записями name: John, wife: {...} и второй объект (словарь) с записями name: Ann, husband: {...}. И совмещаешь 2 объекта (словаря) в один объект (словарь) в переменной family. И теперь чтобы избежать рекурсии - я предположу, что в js присваивание - то же самое что и ссылка на объект.
И у тебя выйдет:
family = {
father: {
name: 'John',
wife: // ссылка на объекто-словарь Ann-ы
},
mother: {
name: 'Ann',
husband: // ссылка на объекто-словарь John-а
}
}
Хз как там с ООП в js, поэтому везде и указал словарь (мейби оно так и работает)