实现instanceof功能的函数

instanceof用于判断引用类型,不能判断普通数据类型!

instanceof 用于判断某个对象是否是另一个对象(构造方法)的实例。instanceof会查找原型链,直到null如果还不是后面这个对象的实例的话就返回false,否则就返回true

function instanceofFun(obj, con){
    if(typeof con != 'function') throw new Error('instance error');   // 构造函数不是函数报错
    if(!obj || (typeof obj != 'object' && typeof obj != 'object')) return false;   // 没有实例或实例不是引用类型返回false

    while (obj.__proto__){  // 最终obj.__proto__是nall的时候退出循环
        if(obj.__proto__ == con.prototype) return true;
        obj = obj.__proto__;
    }
    return false;
}
console.log(instanceofFun([], Array));

 

原文:https://www.jianshu.com/p/0f1ebd388092

posted @ 2020-04-14 13:54  seeBetter  阅读(470)  评论(0编辑  收藏  举报