Почему я могу хранить объект как его собственное свойство?Вот простой пример:
let obj = {};
obj['obj'] = obj;
Это приведет к созданию бесконечного дерева объектов: я могу вызвать obj
с obj.obj.obj.obj
или даже с obj.obj.obj.vobj.obj.obj.obj.obj
.
Это проблема для производительности?Похоже, что это совсем не беспокоит браузер.
На самом деле, когда я смотрю на консоль в Chrome и нажимаю, чтобы развернуть свойства obj
, которые она говорит (во всплывающей подсказке i *)1013 *):
Значение, указанное ниже, было оценено только сейчас
Таким образом, они были оценены именно тогда, когда я щелкнул, чтобы развернуть.
Значит ли это, что JavaScript тоже не будет смотреть на свойства obj
, пока я к ним не получу доступ?
Является ли obj.obj
просто ссылкой на obj
?