JavaScript手写instanseof方法

2020-04-11  本文已影响0人  六寸光阴丶

写在前面

如果本文对您有所帮助,就请点个关注吧!

手写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
上一篇下一篇

猜你喜欢

热点阅读