Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.08.2014, 10:07
Аватар для igory
Интересующийся
Отправить личное сообщение для igory Посмотреть профиль Найти все сообщения от igory
 
Регистрация: 08.07.2013
Сообщений: 10

Поведение DOM объекта
Привет.

Подскажите, пожалуйста, почему так происходит:

var block = document.getElementById('block');

var  block_list = block.children;

console.log(block_list); // объект, содержащий узлы 

block.innerHTML = '';

console.log(block_list); //  объект, не содержащий узлы


Для меня это выглядит следующим образом:

var Obj = {one: 123, two:{a:1, b:2}};

var xxx = Obj.two.b;

Obj.two = null;

console.log(xxx); //выведет  2, хотя по логике верхнего примера должеy был вывести null
Ответить с цитированием
  #2 (permalink)  
Старый 13.08.2014, 10:15
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 09.07.2008
Сообщений: 3,873

Потому-что инстансы NodeList или HTMLCollection - это динамически изменяемые объкты, это что-то типа современного слабосвязанного WeakMap, вроде бы и ссылка на объект в нем есть, но сборщик мусора не считает её и удаляет объект.

Более того, удаление узлов с помощью innerHTML может привести к разным результатам в браузерах, наиболее агрессивно из памяти узлы вычищал IE.
Ответить с цитированием
  #3 (permalink)  
Старый 13.08.2014, 10:20
Аватар для ixth
Профессор
Отправить личное сообщение для ixth Посмотреть профиль Найти все сообщения от ixth
 
Регистрация: 18.01.2010
Сообщений: 354

Потому что NodeList — "живая" коллекция, каждое обращение к нем — неявный вызов getChildNodes. Вот тут вроде это описано: http://learn.javascript.ru/searching...-getelementsby
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как определить что объект принадлежит к разделу нативного DOM объекта devote Оффтопик 11 20.06.2014 23:39
DOM создание объекта JQ ~ вопрос реализации состояния Brook Events/DOM/Window 0 21.01.2014 20:45
Создание объекта и DOM SuperBenza Events/DOM/Window 3 04.06.2013 22:46
Клонирование DOM объекта или как вставить один div много раз Jmunb Общие вопросы Javascript 7 04.04.2013 13:58
Определение DOM объекта leoHex Events/DOM/Window 9 01.09.2011 19:29