Element instanceof Node
今天看到一个问题,问 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了?
Element instanceof Node的更多相关文章
- JavaScript中Element与Node的区别,children与childNodes的区别
关于Element跟Node的区别,cilldren跟childNodes的区别很多朋友弄不清楚,本文试图让大家明白这几个概念之间的区别. Node(节点)是DOM层次结构中的任何类型的对象的通用名称 ...
- HTML Element 与 Node 的区别
Element 与 Node 的区别 <html> <head><title>Element & Node</title></head&g ...
- 跟随 Web 标准探究DOM -- Node 与 Element 的遍历
写在前面 这篇没有什么 WebKit 代码的分析,因为……没啥好分析的,在实现里无非就是树的(先序DFS)遍历而已,囧哈哈哈……在WebCore/dom/Node.h , WebCore/dom/Co ...
- WEB 技术分类 Javascript DOM(Element Node) BOM
Web technology for developers Web 技术文档 备注:本文介绍web technology的分类,各自职责,因为之前一直就没有搞明白各种技术.各种名词究竟是属于哪个范 ...
- 浅析Node与Element
起因 起因有二: 在看winter老师的分享:<一个前端的自我修养>时,有注意到这么一幅图,里面有写childNode和children属性. 昨天有学弟问起我,能否自己定义一个所有元素节 ...
- 从原型链看DOM--Node类型
前言: 本系列从原型,原型链,属性类型等方面下手学习了DOM文档对象模型,旨在弄清我们在DOM中常用的每一个属性和方法都清楚它从哪里来要到哪里做什么事,这样对于理解代码有一定启发.全靠自己在总结中摸索 ...
- 深入了解typeof与instanceof的使用场景及注意事项
JavaScript中的数据类型分为两类,undefined,number,boolean,string,symbol,bigint,null[1]组成的基础类型和Object.Function.Ar ...
- python 解析xml 文件: Element Tree 方式
环境 python:3.4.4 准备xml文件 首先新建一个xml文件,countries.xml.内容是在python官网上看到的. <?xml version="1.0" ...
- JavaScript Node节点笔记
1. 节点及其类型: 1). 元素节点 2). 属性节点: 元素的属性, 可以直接通过属性的方式来操作. 3). 文本节点: 是元素节点的子节点, 其内容为文本. 2. 在 html 文档的什么位置编 ...
随机推荐
- Java 8 之 Optional
Java 8 之 Optional 背景介绍:在我们实际开发中,经常会遇到各种 NullPointerException 报错,为了避免此类问题,需要在业务代码上添加各种if判断,使代码看起来很臃肿, ...
- Rsync反弹shell
vulhub环境靶机 : 192.168.91.130 攻击机:kali 192.168.91.128 一.环境搭建 vulhub环境靶机环境搭建 在纯净ubuntu中部署vulhub环境: 1. ...
- 浅谈spin lock 与信号量
理解阻塞和非阻塞概念: eg: open->read->close eg: open->while(read)->close read -> data received/ ...
- 一个lseek引起的思考
先看一段代码: int find_value(int fd) { int ret; char buff[8] = ""; struct timeval st,ed; long lo ...
- 羽夏逆向指引—— Hook
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易,如果本篇文章有帮助你的, ...
- SSL的作用?
SSL能使用户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对用户进行认证.SSL协议要求建立在可靠的传输层协议(TCP)之上.SSL协议的优势在于它是与应用层协议独立无关的 ...
- ruoyi首次使用常见问题的解决方案
1.导入项目之后,下载依赖包之后,模块的依赖项飘红(我这里无法复现,当参考图吧) 解决方法: 2.ruoyi框架代码生成之后,需要自己进行替换到指定位置.相应的官方文档位置,否则,可能会出现404,访 ...
- JDBC如何解决乱码
只要在连接URL字符里添加参数 ?useUnicode=true&characterEncoding=utf-8 完整的URL字符串如下: 1 String url = "jdbc: ...
- 什么是 Spring Cloud?
Spring cloud 流应用程序启动器是 于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成.Spring cloud Task,一个生命周期短暂的微服务框架,用于快 ...
- Serlvet 输出中文
1 response.setHeader("Content-type", "text/html;charset=UTF-8"); 2 response.setC ...