1. instanceof 介紹
instanceof 是通常用于檢測(cè)某個(gè)實(shí)例對(duì)象是否是這個(gè)構(gòu)造函數(shù)的實(shí)例。
例如:
function P(){}
const p1 = new P()
p1 instanceof P // true
2. instanceof 原理
構(gòu)造函數(shù)原型prototype
這個(gè)構(gòu)造函數(shù)的prototype 屬性指向 這個(gè)構(gòu)造器的原型對(duì)象,實(shí)例對(duì)象的proto指向的也是原型對(duì)象尼斧。即 p1.proto === P.prototype 為true就代表是它的實(shí)例
3. 實(shí)現(xiàn)instance_of函數(shù)
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