手写instanceof

首先在写之前要先理解一下instanceof的实现原理:

  • instanceof 主要的实现原理就是只要右边变量的prototype在左边变量的原型链上即可(也就是说左边的变量能在原型链上找到左边变量的prototype)

了解原理之后开始看代码:

 // 声明myInstanceof函数,接受两个参数left, rightfunction myInstanceOf(left, right) {// 1:声明rightval变量,来得到传入的对象的原型对象let rightVal = right.prototype// 2:声明leftval变量,来得到传入的对象的原型对象let leftVal = left.__proto__// 3:循环遍历左边变量的原型链,查找,如果找不到就到一直循环到父类型或祖类型while (true) {if (leftVal === null) {return false}if (leftVal === rightVal) {return true}leftVal = leftVal.__proto__ // 获取祖类型的__proto__}}// 测试用例:function Test() { }let test = new Test();console.log(myInstanceOf(test, Test));------------------结果:true

总结:

instanceof在查找的过程中会遍历左边变量的原型链,直到找到右边变量的 prototype,如果查找失败,则会返回 false.


这里是一个基于hexo搭建的一个博客:https://nanxiangscholar.github.io/
欢迎访问!

instanceof原理--手写代码实现相关推荐

  1. 高斯朴素贝叶斯分类的原理解释和手写代码实现

    来源:DeepHub IMBA 本文约3500字,建议阅读10+分钟 本文与你介绍高斯分布的基本概念及代码实现. Gaussian Naive Bayes (GNB) 是一种基于概率方法和高斯分布的机 ...

  2. 2021-最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)---手写代码篇

    ★★★ 手写代码:实现forEach map filter reduce ★★★ 手写实现一个简易的 Vue Reactive ★★★ 手写代码,监测数组变化,并返回数组长度 ★★★ 手写原生继承,并 ...

  3. 手写代码(笔试面试真题)

    ★★★ 手写代码:实现forEach map filter reduce ★★★ 手写实现一个简易的 Vue Reactive ★★★ 手写代码,监测数组变化,并返回数组长度 ★★★ 手写原生继承,并 ...

  4. 前端面试题之手写代码篇

    原文地址:前端面试题之手写代码篇 git地址:https://gitee.com/AiShiYuShiJiePingXing/lovebetterworld 点击前往GIT 一.JavaScript ...

  5. 前端面试高频手写代码题

    前端面试高频手写代码题 一.实现一个解析URL参数的方法 方法一:String和Array的相关API 方法二: Web API 提供的 URL 方法三:正则表达式+string.replace方法 ...

  6. python手写代码面试_常见Python面试题—手写代码系列

    原标题:常见Python面试题-手写代码系列 1.如何反向迭代一个序列 #如果是一个list,最快的方法使用reverse tempList = [1,2,3,4] tempList.reverse( ...

  7. python 反卷积(DeConv) tensorflow反卷积(DeConv)(实现原理+手写)

    Tensorflow反卷积(DeConv)实现原理+手写python代码实现反卷积(DeConv) 理解: https://www.zhihu.com/question/43609045/answer ...

  8. python手写代码面试_常见Python面试题 — 手写代码系列

    原标题:常见Python面试题 - 手写代码系列 作者: Peace & Love 来自:https://blog.csdn.net/u013205877/article/details/77 ...

  9. 深入浅出 TCP/IP 协议栈丨手写代码实现网络协议栈

    TCP/IP 协议栈是一系列网络协议的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输.TCP/IP 协议采用4层结构,分别是应用层.传输层.网络层和链路 ...

最新文章

  1. 电子计算机发展迅,ENIAC问世以来的短短的四十多年中,电子计算机的发展异常迅速...
  2. [Node.js]Restful Api
  3. vs怎么写html5页面,怎么使用vscode写html5
  4. cmake 简介-初识
  5. 如果你现在很穷,很苦,不要苦恼
  6. 在RedHat Enterprise Linux 上Oracle 9i的安装配置与调优
  7. Jquery1.4.1 学习
  8. python 输出函数表达式——LaTeX数学公式
  9. python之pdf分页
  10. 简单实现网络验证_电脑计算机编程入门教程自学
  11. Visio软件方案UML选择
  12. CodeForces 1153D : Serval and Rooted Tree 树形DP
  13. 保险丝的作用原理及选择
  14. 【基础】python操作Word时,自动更新目录(二)
  15. lept_json的学习之JSON
  16. 竹海杂谈0(曾经走过的坑2)- ----- cadence的环境配置
  17. Algorithm Review 7 数学相关
  18. Win8安装STEP7提示pniopcac.exe错误
  19. 2021年中国奶油行业上市企业对比分析:海融科技VS 立高食品[图]
  20. ROS环境下Baxter机器人控制记录

热门文章

  1. 同一个网线,接服务器网卡不亮,接笔记本网卡亮
  2. 莆田系医生:达不到创收任务被炒
  3. keil下载代码时出现:“Not a genuine ST Device! Abort connection“的错误
  4. ASIC/ARM/CPU/GPU 芯片算力估算
  5. win10下keras模型可视化plot_model报错终极解决办法
  6. 电脑安装软件出现更改计算机怎么回事,电脑为什么一直自己安装软件怎么办
  7. 来到惠普的第一篇博文
  8. 菲尼克斯电源UNO2-PS/1AC/24DC/120W - 1110466
  9. hellowei专业制作微名片
  10. 玩转C语言for循环