instanceof 原理

2021-04-19  本文已影响0人  孟大仙

1. instanceof 介绍

instanceof 是通常用于检测某个实例对象是否是这个构造函数的实例。
例如:
function P(){}
const p1 = new P()
p1 instanceof P // true

2. instanceof 原理

构造函数原型prototype
这个构造函数的prototype 属性指向 这个构造器的原型对象,实例对象的proto指向的也是原型对象。即 p1.proto === P.prototype 为true就代表是它的实例

3. 实现instance_of函数

function instance_of(p, Fn) {
  const proto = Fn.prototype
  while (true) {
    if (p === null) {
      return false
    }
    if (p === proto) {
      return true
    }
    p = p.__proto__
  }
}

function P() {
}
function P2() {
}
const p1 = new P()
const p2 = new P2()
console.log(instance_of(p1, P)) // true
console.log(instance_of(p2, P)) // false
console.log(instance_of(p2, P2)) // true

上一篇下一篇

猜你喜欢

热点阅读