实现一个函数 myInstanceof(left, right),判断 left 是否是 right 的实例

· 约 3 分钟读完 · 第 1 / 125 章

推荐答案

本题详细解读

1. 基本思路

myInstanceof 函数的核心思想是通过遍历 left 对象的原型链,检查是否存在与 right.prototype 相等的原型对象。如果找到,则返回 true,否则返回 false。

2. 代码解析

  • 基本类型判断:首先判断 left 是否为对象类型,如果不是对象类型或者为 null,则直接返回 false。因为基本类型(如 number, string, boolean 等)不可能是某个构造函数的实例。

  • 原型链遍历:通过 Object.getPrototypeOf(left) 获取 left 的原型对象,然后进入一个 while 循环,不断向上查找原型链。

  • 终止条件:如果遍历到原型链的顶端(即 proto 为 null),则返回 false。如果在遍历过程中找到了与 right.prototype 相等的原型对象,则返回 true。

3. 示例

在这个示例中,person 是 Person 的实例,同时也是 Object 的实例,但不是 Array 的实例。