Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Чем-то чревато, если объект имеет ссылку на себя? (https://javascript.ru/forum/misc/58867-chem-chrevato-esli-obekt-imeet-ssylku-na-sebya.html)

yazonnile 14.10.2015 20:06

Чем-то чревато, если объект имеет ссылку на себя?
 
Всем привет.
Интерисует вопрос. Есть несколько объектов. И у каждого и них есть свойство, которое позволяет получить доступ к остальным объектам. Кросс-ссылки, или это правильно назвать?
var objects = {};

for (var i = 0; i < 5; i++) {
 	var newObj = {
    	objects: objects
    };
    
    objects['new' + i] = newObj;
}

console.log(objects);


Меня смущает, что это работае :)
Вроде как получаем "рекурсию", но ничего не виснет.

Объясните, пожалуйста, почему работает, чем чревато и можно ли такое использовать?


ЗЫ

Упрощенный вариант. Вопросы - те же. Внутри объекта есть ссылки на себя же
var objects = {};
var newObj = {
    objects: objects
};

objects['new'] = newObj;
console.log(objects);

ruslan_mart 14.10.2015 21:31

Ничем. Использовать можно.

console.log(window.window.window.window.window.window.window.window.window.window.window.window.window.window.window.window.window.window);

MallSerg 15.10.2015 19:47

При переборе объекта с ссылкой на самого себя можно уйти в бесконечную рекурсию

т.е. любые итераторы с таким объектом работать не смогут и приложение будет падать.
JSON.stringify({});
alert ("no error object");
JSON.stringify(window);
alert ("no error window");

yazonnile 16.10.2015 13:37

Спасибо за ответы.
Все понял

nerv_ 16.10.2015 14:07

Цитата:

Сообщение от MallSerg
т.е. любые итераторы с таким объектом работать не смогут

мой работает =)


Часовой пояс GMT +3, время: 06:50.