Чем-то чревато, если объект имеет ссылку на себя?
Всем привет.
Интерисует вопрос. Есть несколько объектов. И у каждого и них есть свойство, которое позволяет получить доступ к остальным объектам. Кросс-ссылки, или это правильно назвать?
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, время: 04:24. |