Open Genzhen opened 3 years ago
每日一题会在下午四点在交流群集中讨论,五点小程序中更新答案 欢迎大家在下方发表自己的优质见解 二维码加载失败可点击 小程序二维码
instanceof 主要用于判断某个实例是否属于某个类型,也可用于判断某个实例是否是其父类型或者祖先类型的实例。
instanceof 主要的实现原理就是只要右边变量的 prototype 在左边变量的原型链上即可。因此,instanceof 在查找的过程中会遍历左边变量的原型链,直到找到右边变量的 prototype,如果查找失败,则会返回 false。
function myInstanceof(left, right) { if (typeof right !== "function") throw new Error("instance error"); if (!left || (typeof left !== "object" && typeof left !== "function")) return false; // 获取到原型对象 const rightVal = right.prototype; const leftVal = left.__proto__; // 若找不到就一直循环到父类型或祖类型 while (leftVal) { if (leftVal === rightVal) { return true; } leftVal = leftVal.__proto__; // 获取祖类型的__proto__ } return false; } console.log(myInstanceof(() => {}, Function)); // true
经典原型链图
@Component({ components: {Editor} })
扫描下方二维码,收藏关注,及时获取答案以及详细解析,同时可解锁800+道前端面试题。
instanceof
instanceof 主要用于判断某个实例是否属于某个类型,也可用于判断某个实例是否是其父类型或者祖先类型的实例。
instanceof 主要的实现原理就是只要右边变量的 prototype 在左边变量的原型链上即可。因此,instanceof 在查找的过程中会遍历左边变量的原型链,直到找到右边变量的 prototype,如果查找失败,则会返回 false。
经典原型链图