JavaScript手写系列(四)(手写instanceof)

52 阅读1分钟

判断在实例的原型链中找到该构造函数的prototype属性所指向的原型对象, 存在就返回true。

function myInstanceof(left, right) {
    let proto = left.__proto__
    let protoType = right.prototype
    while(true) {
        if (proto === null) {
            return false
        }
        if (proto === protoType) {
            return true
        }
        proto = proto.__proto__
    }
}

// 利用原型链知识
function myInstance(left, right) {
    let p = left
    while (p) {
        if (p === right.prototype) return true 
        p = p.__proto__
    }
    return false
}