instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。
语法
object instanceof constructor
参数
object 某个实例对象
constructor 某个构造函数
实现步骤
- 首先获取对象的原型
- 然后获取构造函数的原型
- 循环判断对象的原型是否等于构造函数的原型,直到对象的原型为null。任何原型链的终点都为null
function myInstanceof(obj,constructor){
let proto=Object.getPrototypeOf(obj);//获取对象的原型
let prototype=constructor.prototype;//获取构造函数的原型
//循环判断
while(true){
if(proto===null){
return false;
}
if(proto===prototype){
return true;
}
proto=Object.getPrototypeOf(proto);
}
}