instanceof的原理是什么,如何实现?
- instanceof可以正确的判断对象的类型,因为内部机制是通过判断对象的原型链中是不是能找到类型的prototype。
- 实现instanceof:
- 首先获取类型的原型
- 然后获得对象的原型
- 然后一直循环判断对象的原型是否等于类型的原型,直到对象原型为null,因为原型链最终为null
function myInstanceof(left, right) {
let prototype = right.prototype;
let left = left.__proto__;
while (true) {
if (left === null || left === undefined) {
return false;
}
if (prototype === left) {
return true;
}
left = left.__proto__;
}
}