JavaScript——intanceof 操作符的实现原理及实现

579 阅读1分钟

一、intanceof 操作符的实现原理及实现

1.实现原理:

instanceof 运算符用于判断构造函数的 prototype(原型对象) 属性是否出现在对象的原型链中的任何位置。

function myInstanceof(left, right) {
  // 获取对象的原型
  let proto = Object.getPrototypeOf(left)
  // 获取构造函数的 prototype 对象
  let prototype = right.prototype; 
 
  // 判断构造函数的 prototype 对象是否在对象的原型链上
  while (true) {
    if (!proto) return false;
    if (proto === prototype) return true;
    // 如果没有找到,就继续从其原型上找,Object.getPrototypeOf方法用来获取指定对象的原型
    proto = Object.getPrototypeOf(proto);
  }
}

二、总结:

原理:

instanceof 是一个运算符,它可以用来判断某一个对象的类型,具体原理就是利用了原型和原型链(判断构造函数prototype属性是否出现在对象的原型链中)。

instanceof =>通过 原型和原型链 判断一个实例对象与一个构造函数之间的关系的.

instanceof 左侧是一个实例对象,右侧是一个构造函数。

构造函数:形如我们的 ObjectFunction 都可以称之为构造函数。

eg:A instanceof B A为要判断类型的对象,B为构造函数。

更简单的说法:

  • 我们拿到 instanceof 左侧对象的原型链
  • 再拿到 instanceof 右侧构造函数的显式原型 prototype
  • 如果原型链中存在显式原型 prototypeinstanceof 返回 true,否则返回 false