直接上代码
function myInstanceOf(obj,mClass){
const mclass = mClass.prototype; //确定函数原型
// let _prop = obj.__proto__;//确认对象原型
let _prop = Object.getPrototypeOf(obj) //ES5推出的函数作为获取对象原型的标准API
while(true){
//函数原型与对象原型相同时
if(_prop === mclass){
return true;
}
//对象原型为null
if(_prop === null){
return false;
}
//函数原型与对象原型不相同时,通过原型链查找父级原型
_prop = Object.getPrototypeOf(_prop);
}
}
console.log(myInstanceOf(3,Boolean));
通过定义知道,instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上,所以我们只要获取了prototype值,顺着原型链一级级向上找。详细内容可以到MDN上了解。