javascript中的instanceof实现

118 阅读1分钟

文章目录


前言

在写对象相关方法时用到了instanceof来判断对象是否属于某种类型,研究一下是怎么实现的,加深自己的理解。

instanceof

如下面一个小案例:

const arr = [1, 2, 3];
console.log(arr instanceof Array); // true

其实instanceof原理是判断左边对象的原型链中是否存在右边对象的原型对象。
封装一个很简单版的函数,便与理解instanceof工作机制。

function fnInstanceof(left, right) {
  if (Object.getPrototypeOf(left) === right.prototype) {
    return true;
  } else if (Object.getPrototypeOf(left)) {  // 就是还没到 null
    left = Object.getPrototypeOf(left);
    return fnInstanceof(left, right);
  } else {
    return false;
  }
}

const arr = [1, 2, 3];
console.log(fnInstanceof(arr, Array));     // true
console.log(fnInstanceof(arr, Object));    // true
console.log(fnInstanceof(arr, Function));  // false