【前端手撕】instanceof

instanceof是利用原型链来判断元素是否是某个构造函数的实例,原理是看构造函数的prototype是否在实例的原型链上。

当我们写 a instanceof F 时,JS 引擎在底层做的是链式查找

  1. 先获取 F.prototype(构造函数的显式原型)。

  2. 然后获取 a 的隐式原型(a.__proto__,即 Object.getPrototypeOf(a))。

  3. 循环比较:a 的当前原型 === F.prototype 吗?如果不相等,就顺着链条往上走:a.__proto__.__proto__...

  4. 如果链条最终指向了 null 还没找到,返回 false;一旦中途匹配,立即返回 true

代码

javascript 复制代码
function myInstanceof(left, right) {
    const prototype = right.prototype
    let proto = Object.getPrototypeOf(left)
    while (true) {
        if (proto === null) return false
        if (proto === prototype) return true
        proto = Object.getPrototypeOf(proto)
    }
}
相关推荐
倾颜5 小时前
AI Mind 的单线程短期记忆设计:如何压缩、整理并控制当前会话上下文
前端·langchain·llm
u0143781086 小时前
行内块元素之间的空白
前端·html
Lsx_6 小时前
基于 Claude Code 的 AI 编程工作流探索
前端·ai编程·claude
yingyima6 小时前
Nginx 配置速查手册:核心语法与实战案例
前端
梨子同志6 小时前
开发工具
前端·后端
像我这样帅的人丶你还6 小时前
Java 后端详解(六):Maven 与本地开发指南
前端·后端
触底反弹6 小时前
🎲 纯 CSS 搞定 3D 旋转立方体?还附赠一个「天坑」解决方案!
前端·css·html
盗德6 小时前
LangChain.js 中文开发手册(记录)
前端
༄沐࿆风࿆࿆7 小时前
JavaScript函数完全指南:从基础语法到闭包原理与应用实战
开发语言·javascript
Geek-Chow7 小时前
微服务认证与授权:01 — 概念
java·前端·数据库