写在前面
如果本文对您有所帮助,就请点个关注吧!
手写instanseof方法
如果是基础类型那么直接返回false,否则顺着原型链进行比对,一直到原型链为null
1. 源码
function instance_of(L, R) {
const baseType = ['string', 'number', 'boolean', 'undefined', 'symbol', 'bigint']
if (baseType.includes(typeof (L))) return false
let RP = R.prototype
L = L.__proto__
while (true) {
if (L === null) return false
else if (L === RP) return true
else L = L.__proto__
}
}
2. 测试
class Person {
constructor(_name, _age) {
this.name = _name
this.age = _age
}
}
let person = new Person('name', 0)
console.log(instance_of(person, Person))
console.log(instance_of(person, Array))
console.log(instance_of([], Array))
3. 测试结果
true
false
true
网友评论