思路:使用A instanceof B检查B.prototype是否等于A的原型链之一。通俗来说,就是一个接一个地比较:
A.__proto__===B.prototype?
A.__proto__.__proto__===B.prototype?
A.__proto__.__proto__.__proto__===B.prototype?
......
如果任意一个的答案为true,则返回true;否则,如果我们已经检查到原型链的尾端,则返回false;代码如下:
function myInstance(A, B) {
let proto = A.__proto__;
let prototype = B.prototype;
while (true) {
if (proto == null) return false;
if (proto == prototype) return true;
proto = proto.__proto__;
}
}