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__
    }
}

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

相关推荐
持梦远方4 分钟前
持梦行文本编辑器(cmyfEdit):架构设计与十大核心功能实现详解
开发语言·数据结构·c++·算法·microsoft·visual studio
HeDongDong-6 分钟前
Kotlin 协程(Coroutines)详解
android·开发语言·kotlin
阿里嘎多学长7 分钟前
2025-12-29 GitHub 热点项目精选
开发语言·程序员·github·代码托管
AmsWait8 分钟前
微信H5订阅消息接入实战:样式错乱、返回值解析报错?避坑指南来了
javascript·微信
鹿角片ljp9 分钟前
深入理解Java集合框架:核心接口与实现解析
java·开发语言·windows
不爱吃糖的程序媛11 分钟前
在鸿蒙PC上体验JavaScript应用开发:系统信息查看工具
javascript·华为·harmonyos
大布布将军15 分钟前
⚡后端安全基石:JWT 原理与身份验证实战
前端·javascript·学习·程序人生·安全·node.js·aigc
小灰灰搞电子15 分钟前
C++ 文件操作详解
开发语言·c++·文件操作
huali18 分钟前
社区划分:让AI理解你的代码重构意图
前端·javascript·vue.js
让学习成为一种生活方式22 分钟前
如何根据过滤的pep序列进一步过滤gff3文件--python015
开发语言·人工智能·python