美文网首页
instanceof 实现

instanceof 实现

作者: 我是一个前端 | 来源:发表于2019-10-23 11:26 被阅读0次

// 实现一个instanceof
/**
* 先说一下instenceOf是干什么的
* 用法 leftValue instanceof rightValue 返回boolean值
*
* 原理:查找右侧对象是否在左侧对象的原型链上
* 需要注意 左侧必须为对象
*
* 实现原理:在左侧值的原型链上一直找下去 直到找到右侧对象的原型,或者一直到null为止
*
* 开始之前为了更好的理解我先说一下原型链
*
* 构造函数 --- new --> 实例化对象 --- __proto__ --> 构造函数.prototype --- constructor ---> 构造函数
*
*
*/

    // 例如:
    function Animal(){}
    let cat = new Animal()
    console.log(cat instanceof Animal)
    console.log(cat.__proto__ == Animal.prototype)
    console.log(Animal == Animal.prototype.constructor)
image.png

//简单介绍了一下原型链 接下里我们开始通过原型链的原理来实现instanceof

    function myInstanceOf(leftValue,rightValue){
        //如果左侧值 leftValue不是对象 或者为null 直接返回false
        if(typeof leftValue !== "object"|| leftValue === null){
            return false
        }
        let proto = leftValue.__proto__
        let prototype = rightValue.prototype
        //一直沿着原型链找下去 知道有结果
        while(true){
            //一直找到对象的根null还没有找到右侧对象 返回false
            if(proto === null){
                return false
            }
            //在原型链中找到了
            if(proto === prototype){
                return true
            }
            // 重新赋值proto 继续往上找
            proto = prototype.prototype
        }
    }

    console.log('测试结果--'+myInstanceOf(cat,Animal)) //true

欢迎吐槽or点赞!

相关文章

  • 2019-05-03

    instanceof的实现 function instanceOf(a,b) { //a是否是b的实例?判断b.p...

  • instanceof 实现

    // 实现一个instanceof/*** 先说一下instenceOf是干什么的* 用法 leftValue i...

  • JS手动实现instanceof

    1.instanceof实现原理 2、解释说明 示例: a instanceof B 检测a的原型链(proto)...

  • 接口类

    可以用instanceof检查一个对象是否实现了某个特定接口anObject instanceof Compara...

  • instanceof 的实现

    我们可以通过while实现,终止条件为Object.prototype.prototype = undefined...

  • 手动实现instanceof

    instanceof instanceof 用于判断某个对象是否是另一个对象(构造方法)的实例。instanceo...

  • instanceof实现原理

    看了篇文章讲instanceof实现原理,觉得通俗易懂,在此记录下一句话简述,就是无限比对原型,直到原型对象相等

  • instanceOf

    instanceOf有什么作用?内部逻辑是如何实现的? instanceOf判断一个对象是不是某个类型的实例 [1...

  • JS基础-instanceof原理及其实现

    实现原理 instanceof的实现实际上是调用JS的内部函数 [[HasInstance]] 来实现的其实现原理...

  • java基本功16课:(7)面向对象的陷阱

    instanceof 运算符的陷阱 instanceof 它用于判断前面的对象是否是后面的类或其子类、实现类的实例...

网友评论

      本文标题:instanceof 实现

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