作用:
用于判断构造函数的 prototype 属性是否出现在对象的原型链中
实现步骤:
1.获取对象的原型对象(隐式)
2.获取构造函数的原型对象(显式)
3. 判断构造函数的原型对象是否在对象的原型链上
手写代码:
//关键点;① 3个步骤,② getPrototype()
function myInstanceof(left,right){
// 1.获取对象的原型对象(隐式)
let proto = Object.getPrototypeOf(left)
// 2.获取构造函数的原型对象(显式)
let prototype = right.prototype;
// 3. 判断构造函数的原型对象是否在对象的原型链上
while(proto){
if(proto === prototype){
return true
}else{
proto = Object.getPrototypeOf(proto) //如果不在继续从其原型往上找
}
}
return false
}
//检验
let arr = [1,2,3]
let obj = {age: 12, sex: '男'}
let f = new Function();
console.log(myInstanceof(arr,Array))
console.log(myInstanceof(arr,Object))
console.log(myInstanceof(arr,Function))
console.log(arr instanceof Array)
console.log(arr instanceof Object)
console.log(arr instanceof Function)