为什么`Element instanceof Node`返回false

时间:2017-03-09 02:00:45

标签: javascript dom element

我不知道为什么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

1 个答案:

答案 0 :(得分:1)

ElementFunction,因为它是构造函数。

Element.prototypeNode

  

因为nodeType为1的任何元素都是特殊类型的Node。

请注意Element.nodeTypeundefinedElement不是Node

  

为什么DOM中的元素都是Element和Node的实例?

原型链允许我们基本上定义类并扩展定义的类。

function Foo() {...}

创建可被视为Foo

类的内容
function Bar() {...}

创建可被视为Bar

类的内容
Foo.prototype = new Bar(...);

创建Foo扩展Bar的关系。

使用此代码,如果您创建Foo实例:

var f = new Foo();

fFoo的实例Bar的实例。

相同的层次结构适用于ElementNode,其中Element延伸Node