作用:
用于判断构造函数的 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)
本文介绍了一个名为myInstanceof的手写函数,用于检查一个对象的原型链上是否包含特定构造函数的prototype属性。通过3步操作,包括隐式获取对象原型、显式获取构造函数原型,然后遍历原型链进行比较。实例代码和测试用例展示了其工作原理。


被折叠的 条评论
为什么被折叠?



