intanceof操作符的实现

50 阅读1分钟
function myInstance(obj,func){
            if(!(obj instanceof Object) || typeof func !== 'function'){
                return false    // 判断obj是否为对象,判断func是否为函数
            }
            let {prototype} = func  // 获取构造函数的 prototype 对象
            let proto = Object.getPrototypeOf(obj)   // 获取对象的原型
            while(true){ 
                if(!proto) return false      // proto为空,返回false
                if(proto===prototype) return true
                proto = Object.getPrototypeOf(proto)// 如果没有找到,就继续从其原型上找,Object.getPrototypeOf方法用来获取指定对象的原型
            }
        }