我不知道为什么Element instanceof Node
返回false,因为nodeType为1的任何元素都是特殊类型的Node。
以下是我从MDN发现的内容:
以下接口都从Node继承其方法和属性:Document,Element,CharacterData(Text,Comment和CDATASection继承),ProcessingInstruction,DocumentFragment,DocumentType,Notation,Entity,EntityReference
问题2:为什么DOM中的任何元素都是元素的实例和节点的实例。代码如下:
var div = document.querySelector("div");
div instanceof Node;//true
div instanceof Element;//true
Element instancof Node;//false
答案 0 :(得分:1)
Element
是Function
,因为它是构造函数。
Element.prototype
是Node
。
因为nodeType为1的任何元素都是特殊类型的Node。
请注意Element.nodeType
为undefined
,Element
不是Node
。
为什么DOM中的元素都是Element和Node的实例?
原型链允许我们基本上定义类并扩展定义的类。
function Foo() {...}
创建可被视为Foo
function Bar() {...}
创建可被视为Bar
Foo.prototype = new Bar(...);
创建Foo
扩展Bar
的关系。
使用此代码,如果您创建Foo
实例:
var f = new Foo();
f
是Foo
,和的实例Bar
的实例。
相同的层次结构适用于Element
和Node
,其中Element
延伸Node
。