Чем-то чревато, если объект имеет ссылку на себя?
Всем привет.
Интерисует вопрос. Есть несколько объектов. И у каждого и них есть свойство, которое позволяет получить доступ к остальным объектам. Кросс-ссылки, или это правильно назвать? 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); |
Ничем. Использовать можно.
console.log(window.window.window.window.window.window.window.window.window.window.window.window.window.window.window.window.window.window); |
При переборе объекта с ссылкой на самого себя можно уйти в бесконечную рекурсию
т.е. любые итераторы с таким объектом работать не смогут и приложение будет падать. JSON.stringify({}); alert ("no error object"); JSON.stringify(window); alert ("no error window"); |
Спасибо за ответы.
Все понял |
Цитата:
|
Часовой пояс GMT +3, время: 06:50. |