手写instanceof

92 阅读1分钟

instanceof的原理是什么,如何实现?

  • instanceof可以正确的判断对象的类型,因为内部机制是通过判断对象的原型链中是不是能找到类型的prototype。
  • 实现instanceof:
  1. 首先获取类型的原型
  2. 然后获得对象的原型
  3. 然后一直循环判断对象的原型是否等于类型的原型,直到对象原型为null,因为原型链最终为null
function myInstanceof(left, right) {
    let prototype = right.prototype;
    let left = left.__proto__;
    while (true) {
        if (left === null || left === undefined) {
            return false;
        }
        if (prototype === left) {
            return true;
        }
        left = left.__proto__;
    }
}