zoukankan      html  css  js  c++  java
  • JavaScript基础之--- 手写instanceof 的实现

    手写instanceof 的实现:

    instanceof 运算符用于测试构造函数的 prototype 属性是否出现在对象原型链中的任何位置。

    实现思路:

    首先 instanceof 左侧必须是对象, 才能找到它的原型链

    instanceof 右侧必须是函数, 函数才会prototype属性

    迭代 , 左侧对象的原型不等于右侧的 prototype时, 沿着原型链重新赋值左侧

    // [1,2,3] instanceof Array ---- true
    
    // L instanceof R
    // 变量R的原型 存在于 变量L的原型链上
    function instance_of(L,R){    
        // 验证如果为基本数据类型,就直接返回false
        const baseType = ['string', 'number','boolean','undefined','symbol']
        if(baseType.includes(typeof(L))) { return false }
        
        let RP  = R.prototype;  //取 R 的显示原型
        L = L.__proto__;       //取 L 的隐式原型
        while(true){           // 无线循环的写法(也可以使 for(;;) )
            if(L === null){    //找到最顶层
                return false;
            }
            if(L === RP){       //严格相等
                return true;
            }
            L = L.__proto__;  //没找到继续向上一层原型链查找
        }
    }

  • 相关阅读:
    【线性结构上的动态规划】UVa 11584
    【线性结构上的动态规划】UVa 11400
    3亿欢乐豆 娱乐休闲
    我为什么害怕找工作
    每天一题之001
    PCA的数学原理
    Java输入输出流
    JAVA之File类
    ML之多元线性回归
    JAVA之Map使用
  • 原文地址:https://www.cnblogs.com/james23dong/p/12410612.html
Copyright © 2011-2022 走看看