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

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

相关推荐
咪咪渝粮2 分钟前
JavaScript 中constructor 属性的指向异常问题
开发语言·javascript
最初的↘那颗心3 分钟前
Java HashMap深度解析:原理、实现与最佳实践
java·开发语言·面试·hashmap·八股文
无羡仙22 分钟前
事件流与事件委托:用冒泡机制优化前端性能
前端·javascript
CodeTransfer23 分钟前
今天给大家搬运的是利用发布-订阅模式对代码进行解耦
前端·javascript
鹏多多27 分钟前
js中eval的用法风险与替代方案全面解析
前端·javascript
热爱23328 分钟前
前端面试必备:原型链 & this 指向总结
前端·javascript·面试
Spider_Man29 分钟前
面试官:你能手写 bind 吗?——JS this 全家桶趣味深度剖析
前端·javascript·面试
ikonan30 分钟前
译:不要过度优化你的优化
前端·javascript·react.js
前端老鹰33 分钟前
JavaScript Array.prototype.at ():数组任意位置取值的新姿势
前端·javascript
后台开发者Ethan1 小时前
Python需要了解的一些知识
开发语言·人工智能·python