Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.03.2013, 07:51
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Зачем у NodeList и HTMLCollection свойство length enumerable?
А также item и namedItem. Зачем это сделано? Зачем наставили палок в колеса?

var array = [1,2,3]
for (var key in array) {
    alert(key + ' in array');
}


<body>
<script>
var nodeList = document.documentElement.childNodes;
for (var key in nodeList ) {
    alert(key + ' in nodeList');
}
</script>
</body>



<body>
<script>
var collection = document.documentElement.children;
for (var key in collection) {
    alert(key + ' in collection');
}
</script>
</body>
Ответить с цитированием
  #2 (permalink)  
Старый 27.03.2013, 08:34
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

Затем, что это не Array же, и никогда им не было.
Чем конкретно вам мешает такое положение дел?
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 27.03.2013, 09:29
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Кажется дошло. Во всех объектах, отличных от базовых типов (Array, Function, Object, String и тд) методы в прототипе configurable.

Возникли другие вопросы: на что влияет enumerable ? На for..in влияет configurable видимо. А на что enumerable?

И зачем у NodeList свойство length не enumerable ?


var descriptor = Object.getOwnPropertyDescriptor([], 'length')
alert ([descriptor.enumerable, descriptor.configurable])


var descriptor = Object.getOwnPropertyDescriptor(document.documentElement.childNodes, 'length')
alert ([descriptor.enumerable, descriptor.configurable])


var descriptor = Object.getOwnPropertyDescriptor(document.documentElement.children, 'length')
alert ([descriptor.enumerable, descriptor.configurable])
Ответить с цитированием
  #4 (permalink)  
Старый 27.03.2013, 10:12
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от danik.js
На for..in влияет configurable видимо. А на что enumerable?
вообще то наоборот, enumerable что бы в (for..in попадало/не попадало), а configurable на то что бы его никто не переопределил, то есть одним словом замораживает свойство. И его уже нельзя будет переопределить/удалить/заменить и т.д.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #5 (permalink)  
Старый 27.03.2013, 10:45
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

devote, так то да, действительно:
var object = Object.create(null, {
    enumerable: {enumerable:true, configurable:false},
    configurable: {enumerable:false, configurable:true},
})

for (var key in object) {
    alert(key)
}


Вот только почему-то с NodeList в хроме все наоборот. В нем nodeList.length имеет enumerable:false, configurable:true. В других браузерах дескриптор = undefined. Опять магия какая-то. Как уже достала эта магия.
Ответить с цитированием
  #6 (permalink)  
Старый 27.03.2013, 11:02
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

Ну какбэ это же не часть языка, а часть, ткскзть, api предоставляемого браузером для работы с его внутренней кухней. Потому тут всё в лучшем случае так, как написано в стандаре w3c, а в худшем - как разрабам на душу положит. Не принимайте близко к сердцу.)
__________________
29375, 35
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите прикрутить forEach к HTMLCollection и NodeList ­­­ Общие вопросы Javascript 14 14.11.2011 12:07
Чем отличаются объекты HTMLCollection и NodeList? Cooskon Events/DOM/Window 4 12.09.2010 18:32