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
网友评论