From https://developer.mozilla.org/it/docs/Web/API/NodeList:
Why is NodeList not an Array?
NodeList are used very much like arrays and it's tempting to invoke
Array.prototype methods on them, however NodeList objects don't have
any of the familiar Array methods.
JavaScript has an inheritance mechanism based on prototypes for both
built–in objects (like Arrays) and host objects (like NodeLists).
Array instances inherit array methods (such as forEach or map) because
their prototype chain looks like the following:
myArray --> Array.prototype --> Object.prototype --> null (The
prototype chain of an object can be obtained by calling
Object.getPrototypeOf several times.)
forEach, map and the likes are own properties of the Array.prototype
object.
Unlike arrays, NodeList prototype chain looks like the following:
myNodeList --> NodeList.prototype --> Object.prototype --> null
NodeList.prototype contains the item method, but none of the
Array.prototype methods, so they cannot be used on NodeLists.