instanceof 的作用
引用数据类型判断: 用来判断一个引用数据类型是否属于构造函数
继承关系判断: 用来判断一个实例是否属于它的父类型
实现原理
首先判断左边的变量的隐式原型(proto)是否全等于右边的显式原型(prototype),如果相等返回true,如果不等则沿着原型链依次向上进行判断,如果都不等则返回false
手写实现
function instance_of(L, R) {
var RO = R.prototype;
var L = L.__proto__;
while(true) {
if (L === null) return false;
if (RO ==== L) return true;
L = L.__proto__
}
}