Почему у псевдомассива NodeList есть метод Array.prototype.forEach?

183
11 июня 2018, 22:10

document.body.childNodes - это объект, который наследует все свои свойства от Object.prototype. Одновременно он не является массивом, поскольку

Array.isArray(document.body.childNodes) = false.

Но тогда каким образом он наследует свойство Array.prototype.forEach?

console.log(Array.isArray(document.body.childNodes)); // childNodes - не массив 
console.log(typeof document.body.childNodes);  
console.log(document.body.childNodes.hasOwnProperty("forEach")); // в самом childNodes forEach метода нет 
console.log("forEach" in document.body.childNodes); // но у него есть метод массива Array.prototype.forEach 
 
 
 
document.body.childNodes.forEach(function(){ 
  console.log("go forEach") 
}) // тем не менее forEach работает

READ ALSO
Snake_case в camelCase

Snake_case в camelCase

В строке необходимо найти все дефисы или нижние подчеркивания, убрать их и букву после них сделать большой:

180
Как вернуть не html данные из doGet(e)?

Как вернуть не html данные из doGet(e)?

Есть 2 скрипта на разных аккаунтах

217