一、instanceof原理
instanceof 主要的实现原理就是只要右边构造函数的 prototype 在左边实例的原型链上即可。因此,instanceof 在查找的过程中会遍历实例的原型链,直到找到右边变量的prototype,如果查找失败,则会返回 false
二、手写instanceof
function instance_of(L, R) { // L 表示instanceof左边,R 表示instanceof右边
let O = R.prototype; // 取 R 的显示原型
L = L.__proto__; // 取 L 的隐式原型
while (true) { // 循环执行,直到 O 严格等于 L
if (L === null) return false;
if (O === L) return true;
L = L.__proto__; // 获取祖类型的__proto__
}
}