原理
instanceof是javascript语言中的一个运算符,用于检测一个对象是否是一个类或者构造函数的实例。它的语法是boject instanceof constructor,其中object是要检测的对象,constructor是要检测的类或者构造函数。
instanceof运算符的原理是通过判断对象的原型链中是否存在构造函数的原型来确定对象是否是该类或者构造函数的实例。具体来说,instanceof运算符会沿着对象的原型链向上查找,直到找到构造函数的原型或者到达原型链的末端。如果找到了构造函数的原型,就说明该对象是该类或者构造函数的实例,返回true;否则,返回false。
手写instanceof
function myInstanceof(obj,constructor){
let proto=Obejct.getPrototypeOf(obj);
while(proto!==null){
if(proto===constructor.prototype){
return true;
}
proto=Object.getPrototypeOf(proto);
}
return false;
}
这个函数接受两个函数,obj是要检测的对象,constructor是要检测的类或者构造函数,它的实现原理与Javascript中的instanceof运算符类似,通过沿着对象的原型链向上查找来确定对象是否是该类或者该构造函数的实例。
具体来说,这个函数首先获取obj的原型对象,然后不断沿着原型链向上查找,直到找到构造函数的原型或者到大原型链的末端。如果找到了构造函数的原型,就说明该对象是该类或者构造函数的实例,返回true;否则,返回false。