DOM4 делает NodeList сек Iterable:Может ли HTMLCollections повторяться для ... из (Symbol.iterator)?
interface NodeList {
getter Node ? item (unsigned long index);
readonly attribute unsigned long length ;
iterable< Node >;
};
Согласно WebIDL, это означает, что
объектов реализации интерфейса, который объявляется итерируемый поддержка будучи итерации, чтобы получить последовательность значений.
Примечания: В языке ECMAScript связывание, интерфейс, который итерацию будут иметь «запись», «Foreach», «ключи», «ценность» и @@iterator свойства на его interface prototype object.
Так что возможно следующее:
for (var el of document.querySelectorAll(selector)) ...
я заметил то же самое, кажется, работает для HTMLCollections, как на Firefox и Chrome:
for (var el of document.getElementsByTagName(tag)) ...
На самом деле, я получаю
HTMLCollection.prototype[Symbol.iterator] === [][Symbol.iterator]; // true
Однако HTMLCollection не является определяется как Iterable:
interface HTMLCollection {
readonly attribute unsigned long length ;
getter Element ? item (unsigned long index);
getter Element ? namedItem (DOMString name);
};
Я также проверил WHATWG DOM spec и это не итерацию ни.
Тогда это стандартное поведение или нет? Предполагается, что HTMLCollection
должен иметь @@iterator
в прототипе?
http://stackoverflow.com/a/31574921/2813224 – zer00ne