掘金团队号上线,助你 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
- 每天一练,持续学习