instanceof的底层实现原理,手动实现一个instanceof

103 阅读1分钟

instanceof 的作用

引用数据类型判断: 用来判断一个引用数据类型是否属于构造函数

继承关系判断: 用来判断一个实例是否属于它的父类型

实现原理

首先判断左边的变量的隐式原型(proto)是否全等于右边的显式原型(prototype),如果相等返回true,如果不等则沿着原型链依次向上进行判断,如果都不等则返回false

手动实现 instanceof

function instance_of (L, R) { //L 表示左表达式,R 表示右表达式
  var O = R.prototype;
  L = L.__proto__;
  while(true) {
    if ( L === null ) return false;
    if ( O === L ) return true; // 这里重点:当 O 严格等于 L 时,返回true 
    L = L.__proto__;
  }
}

参考:《instanceof的底层实现原理,手动实现一个instanceof》

ps:文末附上汇总文章链接《一名【合格】前端工程师的自检清单【自检ing】》