# 手写instanceof

  • 利用while
function myInstanceof(left, right) {
	  let prototype = right.prototype
	  left = left.__proto__
	  while (true) {
		if (left === null || left === undefined){
			return false
		}
		if (prototype === left){
			return true
		}
		left = left.__proto__
	  }
	}

	
let getresult=myInstanceof(function fun(){},Object)
console.log(getresult)
  • 递归处理
function weiInstanceof(a,b){
	if(arguments.length === 2){
		// 递归操作
		if(a&&a.__proto__&&(typeof(a)==='object'||typeof(a)==='function')){
			console.log(a.__proto__===b.prototype)
			if(a.__proto__ === b.prototype){
				return true
			}else{
				return weiInstanceof(a.__proto__,b)
			}
		}else{
			return false
		}
		// return true
	}else {
		return false
	}
}
let test=weiInstanceof(function(){},Object)
console.log(test)
最后更新: 5/30/2022, 10:02:56 AM