首页 > 其他分享 >instanceof原理

instanceof原理

时间:2023-12-28 22:44:53浏览次数:29  
标签:instanceof proto 对象 实例 原型 原理 构造函数

instanceof

作用:用于检测构造函数的prototype属性是否出现在某个实例对象的原型链上

详细来说就是,instanceof运算符是检查一个实例对象的原型链上是否出现了构造函数的原型对象,
如果实例对象的原型链中出现了构造函数的原型对象,那么这个实例对象就是构造函数的一个实例,
返回true,否则,返回false

缺点

由于instanceof基于原型链的检查,因此如果某个对象的原型链比较深,检查的效率会比较低

手写instanceof

function myInstanceof(target, constructor) {
  // 获取对象的原型对象
  let proto = Object.getPrototypeOf(target);
  // 沿着原型链查找
  while (proto) {
    if (proto === constructor.prototype) {
      return true;
    }
    // 获取原型链上的下个原型
    proto = Object.getPrototypeOf(proto);
  }
  return false;
}

注意事项

instanceof只能检车对象是否是某个构造函数的实例,不能用于基本类型的检查。
如果检查的对象是一个基本数据类型,则返回false。
instanceof判断的是对象的原型链,因此如果有一个对象是某个类的实例,那么它一定是这个类原型链上的某个实例。
因此,如果有一个对象的原型链上没有该类的原型对象,那么它就不是该类的实例,即使有与该类相同的属性和方法。

标签:instanceof,proto,对象,实例,原型,原理,构造函数
From: https://www.cnblogs.com/youbiaokachi/p/17933753.html

相关文章

  • 定时器原理及使用
    一、引入在进行并发编程时,有时候会需要定时功能,比如监控某个GO程是否会运行过长时间、定时打印日志等等。GO标准库中的定时器主要有两种:Timer定时器、Ticker定时器。Timer计时器使用一次后,就失效了,需要Reset()才能再次生效。而Ticker计时器会一直生效。二、Timer定时器1)实现原......
  • 一键控制变色台灯的工作原理?
    一键控制变色台灯的工作原理?单片机控制下的灯泡组单片机是一种简单计算机输入:按键,按一下表示+1运算:门电路通过控制电子和位移来进行运算。+1,输出一种结果;再+1,又输出别一种结果;如此循环往复。十进制计算机和二进制计算机的原理一模一样,试想一下,按一下代表齿轮旋转一个置,......
  • Go 泛型之明确使用时机与泛型实现原理
    目录一、引入二、何时适合使用泛型?场景一:编写通用数据结构时场景二:函数操作的是Go原生的容器类型时场景三:不同类型实现一些方法的逻辑相同时三、Go泛型实现原理Stenciling方案Dictionaries方案Go最终采用的方案:GCShapeStenciling方案四、泛型对执行效率的影响五、小结一......
  • svelte响应式原理
    svelte文件编译为js后的结构源代码:<scriptlang="ts">letfirstName='张'letlastName='三'letage=18functionhandleChangeName(){firstName='王'lastName='二'}fu......
  • 《FPGA原理和结构》——读书笔记
    最近做了一个关于FPGA的项目后,读了《FPGA原理和结构》这本书。主要梗概内容和想法如下。第一章:理解FPGA所需要的基础知识理解FPGA我们需要数电的组合逻辑、时序逻辑等内容的知识。FPGA(20世纪70年度发展起来的,因为其具有通过组合使用器件内大量的逻辑块来实现所需的电路,比以往侠......
  • Diffie-Hellman Key Agreement Protocol 安全漏洞 (CVE-2002-20001)【原理扫描】
    Diffie-HellmanKeyAgreementProtocol是一种密钥协商协议。它最初在Diffie和Hellman关于公钥密码学的开创性论文中有所描述。该密钥协商协议允许Alice和Bob交换公钥值,并根据这些值和他们自己对应的私钥的知识,安全地计算共享密钥K,从而实现进一步的安全通信。仅知道交换......
  • Web自动化测试原理
    Web自动化测试原理:通过控制浏览器进行一系列的自动化操作浏览器驱动:用来控制浏览器:是浏览器厂商开发提供一系列的HTTP的接口脚本--->HTTP接口--->浏览器驱动----内部API--->浏览器为什么使用Selenium?通过面向对象的方式,封装了这些内部接口,方便调用Selenium主要有两大对......
  • Socket和Http的通讯原理,遇到攻击会受到哪些影响以及如何解决攻击问题。
    Socket通信原理:Socket是一种应用程序编程接口(API),用于在单个进程或多个进程之间进行通信。它提供了一种灵活的、异步的通信方式,使应用程序可以方便地建立连接、发送数据和接收数据。Socket通信基于TCP/IP协议,它是一种面向连接、可靠的通信方式。Socket通信过程如下:a.创建Socket:创......
  • 21 mysql 一致性的底层原理
    一致性的原理:个人理解,一致性就是事务执行前后,数据在逻辑上都符合正常情况。想要保持一致性,一般有下面3种手段:第一,就是前面提到的原子性、持久性和隔离性。第二,就是数据自身带的一些参数校验,比如数据长度校验、数据类型校验。第三,就是从应用层面保持一致了。比如在银行账目系统中,保......
  • es 索引生命周期管理的原理
    es的索引生命周期管理indexlifecyclemanagement即ILM,控制着索引的创建、滚动、删除、归档,属实好用,那么它是如何实现的呢?可以想象得到,es的master执行一个定时任务,定期检查关联了ilm的索引,判断索引的状态,执行状态的流转。ILM相关代码在x-pack的plugin目录中,主类是......