手动实现instanceof函数

2021/5/20 18:58:25

本文主要是介绍手动实现instanceof函数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

instanceof 功能

a instanceof b 官方解释为检查构造函数b的prototype 有没有出现在a的原型链上。比如:

function A() {
}

function B() { }
function C() { }

//B继承A
B.prototype = new A()

let instance = new B()

console.log('---instance instanceof B-----', instance instanceof B) //true
console.log('---instance instanceof A-----', instance instanceof A) //true

手动实现
既然知道了instanceof的原理,就可以写一个函数来实现这个功能。实现过程中会用到以下两个函数中的一个。
getPrototypeOf:获取某个实例对象的原型;
isPrototypeOf:检测某一个对象是否存在于另一个对象的原型链上;

基于getPrototypeOf实现的函数为:

function isInstanceOf(target1, target2) {
  let proto = Object.getPrototypeOf(target1)
  if(!proto){return false}
  if (proto === target2.prototype) { return true }
  //递归去原型链上找
  return isInstanceOf(proto, target2)
}

基于isPrototypeOf实现的函数为:

function isInstanceOf(target1, target2) {
  return target2.prototypeis.isPrototypeOf(target1)
}

 



这篇关于手动实现instanceof函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程