php中文网 | cnphp.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 482|回复: 0

Element instanceof Node

[复制链接]

2871

主题

2881

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

UID
1
威望
0
积分
7285
贡献
0
注册时间
2021-4-14
最后登录
2024-9-20
在线时间
716 小时
QQ
发表于 2022-4-6 18:02:58 | 显示全部楼层 |阅读模式
今天看到一个问题,问 Element instance Node 为什么是 false。

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

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

instanceof 这个关键字是用来判断 A 是否为 B 的实例。
[mw_shl_code=applescript,true]let arr = []
console.log(arr instanceof Array)[/mw_shl_code]
如上所示,控制台会打印出true,因为 arr 是 Array 的一个实例。

那么为何 Element instanceof Node 是 false 呢,因为 Element 是 Node 的子类,但不是它的实例。
[mw_shl_code=applescript,true]console.log(Element instanceof Node)<br>console.log(Element.__proto__ === Node)[/mw_shl_code]
显然,上面第一行为 false,第二行为 true。

我们来看一下 instanceof 方法如何运行的,写一下 instanceof 的实现代码。
[mw_shl_code=applescript,true]function myInstanceof(left, right) {
    if (left && left.__proto__) {
        if (left.__proto__ === right.prototype) {
             return true
         } else {
             return myInstanceof(left.__proto__, right)
         }
     } else {
         return false
     }
}[/mw_shl_code]
看到 instanceof 的实现方式,是不是就明白 Element instanceof Node 为false了?

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|php中文网 | cnphp.com ( 赣ICP备2021002321号-2 )

GMT+8, 2024-9-20 08:41 , Processed in 0.183758 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

申明:本站所有资源皆搜集自网络,相关版权归版权持有人所有,如有侵权,请电邮(fiorkn@foxmail.com)告之,本站会尽快删除。

快速回复 返回顶部 返回列表