文章目录
前言
在写对象相关方法时用到了instanceof来判断对象是否属于某种类型,研究一下是怎么实现的,加深自己的理解。
instanceof
如下面一个小案例:
const arr = [1, 2, 3];
console.log(arr instanceof Array); // true
其实instanceof原理
是判断左边对象的原型链中是否存在右边对象的原型对象。
封装一个很简单版的函数,便与理解instanceof工作机制。
function fnInstanceof(left, right) {
if (Object.getPrototypeOf(left) === right.prototype) {
return true;
} else if (Object.getPrototypeOf(left)) { // 就是还没到 null
left = Object.getPrototypeOf(left);
return fnInstanceof(left, right);
} else {
return false;
}
}
const arr = [1, 2, 3];
console.log(fnInstanceof(arr, Array)); // true
console.log(fnInstanceof(arr, Object)); // true
console.log(fnInstanceof(arr, Function)); // false