【前端手撕】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)
    }
}
相关推荐
один but you1 小时前
const和constexpr常量表达式
java·前端·javascript
码云数智-大飞1 小时前
RAII 与智能指针深度拆解
java·前端·算法
qq3621967051 小时前
阿里裁员新消息(2026最新动态汇总)
java·开发语言·前端
a1117762 小时前
“黑夜流星“个人引导页 网页html
java·前端·html
饼饼饼2 小时前
React19 状态解惑:State 没那么神秘,一文读懂 React 状态不可变原则与 Hooks 底层链表
前端·react.js
難釋懷2 小时前
Nginx获取客户端真实IP
服务器·前端·nginx
甲维斯3 小时前
GLM5.2超过Opus4.8Think,全球第二了!
前端·人工智能·ai编程
by————组态3 小时前
Ricon组态系统 - 新一代Web可视化组态平台
前端·后端·物联网·架构·组态·组态软件
JieE2123 小时前
手把手带你用纯 CSS 实现一个 3D 旋转魔方,这些前端基础你能打几分?
前端·css·html