手写题:手动实现一个instanceIOf()

175 阅读1分钟

判断a是否存在 于Object的实例的原型上面即可

module.exports = function myInstanceof(target,origin) {
    // 1 首先把 判断的对象 target 传进去,其次传入Object的实例 origin
    
    // 2 把target的 原型的对象 __proto__ 用proto接收 (不接也可以)
    const proto = target.__proto__;
    
    // 3 分支 如果存在 => 判断是否  === Object的实例的原型 => 在说明属于,不在递归传入proto,保证每次传入参数不一致,且是往上查找,找2层没找到,null.__proto__ => 直接进false
    if (proto) {
        if (origin.prototype === proto) {
            return true
        } else {
            return myInstanceof(proto,origin)
        }
    } 
    else {
       // 4 如果不存在 proto 说明没有原型 直接return false
       return false
    }
}