当前位置 : 主页 > 编程语言 > 其它开发 >

Element instanceof Node

来源:互联网 收集:自由互联 发布时间:2022-05-30
今天看到一个问题,问 Element instance Node 为什么是 false。 首先,我们知道 Element 是 Node 的子类,那么为什么 Element instanceof Node 是 false 呢? Element 是一个构造函数,所以类型为 Function,

今天看到一个问题,问 Element instance Node 为什么是 false。

首先,我们知道 Element 是 Node 的子类,那么为什么 Element instanceof Node 是 false 呢?

Element 是一个构造函数,所以类型为 Function, Node 也是一个构造函数,所以类型也为 Function。

instanceof 这个关键字是用来判断 A 是否为 B 的实例。

let arr = []
console.log(arr instanceof Array)

如上所示,控制台会打印出true,因为 arr 是 Array 的一个实例。

那么为何 Element instanceof Node 是 false 呢,因为 Element 是 Node 的子类,但不是它的实例。

console.log(Element instanceof Node)
console.log(Element.__proto__ === Node)

显然,上面第一行为 false,第二行为 true。

我们来看一下 instanceof 方法如何运行的,写一下 instanceof 的实现代码。

function myInstanceof(left, right) {
    if (left && left.__proto__) {
        if (left.__proto__ === right.prototype) {
             return true
         } else {
             return myInstanceof(left.__proto__, right)
         }
     } else {
         return false
     }
}  

看到 instanceof 的实现方式,是不是就明白 Element instanceof Node 为false了? 

上一篇:python实现剪刀石头布游戏
下一篇:没有了
网友评论