面试取经:instanceof的实现原理

127 阅读1分钟

instanceof可以正确的判断对象的类型,因为内部机制是通过判断对象的原型链中是不是能找到类型的prototype

自己实现一个instanceof

如何实现

  1. 获取类型的原型
  2. 获取对象的原型
  3. 然后一直循环判断对象的原型是否等于类型的原型,直到对象原型为null,因为原型链最终为null
function myInstanceof(left,right){
     //获取类型的原型
	let prototype = right.prototype;
    //获取对象的原型
	left = left._proto_;
	while(true){
    //然后一直循环判断对象的原型是否等于类型的原型,直到对象原型为 null,因为原型链最终为 null
		if(left === null || left === undefined)
			return false
		if (prototype === left)
			return true;
		left = left._proto_
	}
}