JavaScript 手写仿instanceof

定义

MDN 中,描述是这样的。
instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。

实现一个仿instanceof功能的"_instanceof"函数,该函数可以判断首参的原型链中是否在第二个Fn构造函数的原型的 prototype 属性,核心步骤有:

  1. 获取首个对象参数的原型对象
  2. 获取Fn函数的原型对象
  3. 进入死循环,当两个参数的原型对象相等时返回true
  4. 当两个参数的原型对象不相等时获取首个对象参数原型的原型并且循环该步骤直到null时返回false
javascript 复制代码
const _instanceof = (target, Fn) => {
    let proto = target.__proto__
    let prototype = Fn.prototype
    while(true) {
        if(proto === Fn.prototype) return true
        if(proto === null) return false
        proto = proto.__proto__
    }
}

这里要了解一下原型与原型链

相关推荐
gopyer1 小时前
180课时吃透Go语言游戏后端开发6:Go语言的循环语句
开发语言·游戏·golang·循环语句
千码君20162 小时前
React Native:快速熟悉react 语法和企业级开发
javascript·react native·react.js·vite·hook
楼田莉子4 小时前
Qt开发学习——QtCreator深度介绍/程序运行/开发规范/对象树
开发语言·前端·c++·qt·学习
暮之沧蓝4 小时前
Vue总结
前端·javascript·vue.js
木易 士心5 小时前
Promise深度解析:前端异步编程的核心
前端·javascript
韩立学长5 小时前
【开题答辩实录分享】以《基于python的奶茶店分布数据分析与可视化》为例进行答辩实录分享
开发语言·python·数据分析
天若有情6735 小时前
C++空值初始化利器:empty.h使用指南
开发语言·c++
excel5 小时前
深入解析 Vue 3 源码:computed 的底层实现原理
前端·javascript·vue.js
远远远远子5 小时前
类与对象 --1
开发语言·c++·算法
无敌最俊朗@6 小时前
C/C++ 关键关键字面试指南 (const, static, volatile, explicit)
c语言·开发语言·c++·面试