[原型链-实现instanceOf] | 刷题打卡

189 阅读1分钟

掘金团队号上线,助你 Offer 临门! 点击 查看详情

一、题目描述

A instanceof B
是判断A的原型链上有没有B.prototype

eg1:
输入:[] instanceof Array
输出: true
原因:([]).__proto__ === Array.prototype

eg2:
输入:[] instanceof Object
输出:true
原因:([]).__proto__ === Array.prototype === Object.prototype

二、思路分析

也可以采用链表的解决思路,next就相当于原形链的__proto__

三、解题代码


const instanceOf  = (A, B) => {
  let p = A
  while (p) {
    if (p === B.prototype) {
      return true
    }
    p = p.__proto__
  }
  return false
}

console.log(instanceOf([], Array))
console.log(instanceOf([], Object))
 

时间复杂度:O(n) 空间复杂度:O(1)

四、总结

  • A instanceOf B, 判断A的原型链上有没有B.prototype
  • 每天一练,持续学习