美文网首页
JavaScript手写instanseof方法

JavaScript手写instanseof方法

作者: 六寸光阴丶 | 来源:发表于2020-04-11 23:18 被阅读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
    

    相关文章

      网友评论

          本文标题:JavaScript手写instanseof方法

          本文链接:https://www.haomeiwen.com/subject/egfmmhtx.html