instanceof 运算符

209 阅读1分钟

instanceof运算符是用来检测构造函数prototype是否出现在实例/对象的原型链中;

模拟实现instanceof

function instanceof(obj, ctor) {
    // 获取构造函数原型
    let ctorProto = ctor.prototype;
    // 获取实例/对象原型
    let objProto = Object.getPrototypeOf(obj);
    while(1) {
        // 实例/对象的原型最终指向null, 未找到返回false
        if (objProto === null) return false;
        // 原型相同返回true
        if (objProto === ctorProto) return true;
        objProto = Object.getPrototypeOf(objProto);
    }
    return false;
}