示例: a instanceof B
检测a的原型链(__proto__)上是否有B.prototype,若有返回true,否则false
每次不断循环,拿出a的原型,然后再拿出原型指向的构造方法,然后判断一下是不是B。
如果A继承B,然后用B实例化a,然后a instanceof A
会返回true,因为沿着__proto__链一直上去。
function instance_of(L, R) {//L 表示左表达式,R 表示右表达式
L = L.__proto__; // 取 L 的隐式原型
while (true) {
if (L === null)
return false;
if (R === L) // 当 R 显式原型 严格等于 L隐式原型 时,返回true
return true;
L = L.__proto__;
}
}