Оба Document.prototype
и Element.prototype
имеют getElementsByTagName
. Одно не наследуется от другого - это совершенно отдельные функции (не интуитивно):
console.log(
Element.prototype.hasOwnProperty('getElementsByTagName'),
Document.prototype.hasOwnProperty('getElementsByTagName'),
Element.prototype.getElementsByTagName === Document.prototype.getElementsByTagName,
Document.prototype.hasOwnProperty('getElementById'),
Element.prototype.hasOwnProperty('getElementById'),
);
Element.prototype
не не имеет getElementById
.
Интерфейс ParentNode
является абстрактной спецификацией , а не фактический Javascript объект, который вы можете где-то исследовать. И Element.prototype
, и Document.prototype
реализуют его, но делают это, помещая методы ParentNode непосредственно в свои прототипы. (ParentNode
это совсем не то же самое, что Node)