js手写instanceof

instanceof能够正确地判断对象的类型的原理是:通过判断对象的原型链中是不是能找到类型的prototype

我们可以来试着实现一下instanceof

function myInstanceof(left, right) {
  // 获取类型的原型
  let prototype = right.prototype
  // 获取对象的原型
  left = left.__proto__
  while (true) {
    if (left === null || left === undefined) {
      return false
    }
    if (prototype === left) {
      return true
    }
    left = left.__proto__
  }
}

while(true)这段代码意思是,一直循环判断对象的原型是否等于类型的原型,直到对象原型为null(因为原型链终点是null

instanceof