手写 instanceof

3 阅读1分钟

原型链

核心公式:

实例.__proto__ === 构造函数.prototype
构造函数.prototype.constructor === 构造函数
Object.__proto__ === Function.prototype  // Function 是 Object 的实例
Function.prototype.__proto__ === Object.prototype

手写 instanceof:

function myInstanceof(left, right) {
  let proto = Object.getPrototypeOf(left)
  while (proto) {
    if (proto === right.prototype) return true
    proto = Object.getPrototypeOf(proto)
  }
  return false
}