手动实现instanceof

119 阅读1分钟

实现原理

L.__proto__是不是等于R.prototype,知道找到L.proto.__proto__无限循环到等于null

实现

// L 表示左表达式,R 表示右表达式
function instance_of(L, R) {
  var O = R.prototype;
  L = L.__proto__;
  while (true) {
    if (L === null) return false;
    // 这里重点:当 O 严格等于 L 时,返回 true
    if (O === L) return true;
    L = L.__proto__;
  }
}