Какая разница между HTMLElement
и Element
?
document.createElement("div") instanceof Element
дает true
document.createElement("div") instanceof HTMLElement
дает true
HTMLElement === Element
дает false
Какая разница между HTMLElement
и Element
?
document.createElement("div") instanceof Element
дает true
document.createElement("div") instanceof HTMLElement
дает true
HTMLElement === Element
дает false
An HTMLElement
является Element
, как определено в расширении HTML к спецификации ядра DOM Level 2:
interface HTMLElement : Element {
attribute DOMString id;
attribute DOMString title;
attribute DOMString lang;
attribute DOMString dir;
attribute DOMString className;
};
Element
(по спецификации) относится к интерфейсу Element
, как он определен в спецификации DOM Core Level 2 (есть еще одна спецификация DOM Core (рабочий проект), хотя).
Обновление: Есть много спецификаций, и не совсем ясно, какие браузеры используют какой (для меня).
Возможно, у кого-то еще больше понимания...
Но в любом случае Element
является более общим интерфейсом, чем HTMLElement
, а последний наследуется от первого.
Обновление 2: Хороший способ увидеть структуру наследования - выполнить console.dir(elementReference)
для любого элемента (работает в Chrome/Safari, требуется Firebug для Firefox).
HTMLElement явно ссылается на элемент HTML, тогда как Element может ссылаться на элемент XML. Тем не менее, HTMLElement является технически подмножеством элемента.
HTMLElements наследует элемент Element, который наследуется от Node.
Это означает, что ваш HTMLElement одновременно является "экземпляром" всех трех. Тот факт, что он является HTMLElement, означает, что у него есть интерфейс, содержащий методы, которым требуется только HTMLElement, как attachEvent.