Skip to content

myInstanceof

手动实现的 instanceof 操作符,用于检查对象是否为某个构造函数的实例。

函数签名

typescript
function myInstanceof(obj: any, constructor: Function): boolean

参数

参数名类型必填说明
objany要检查的对象
constructorFunction构造函数

返回值

类型说明
booleantrue 表示是该构造函数的实例,false 表示不是

工作原理

  1. 获取构造函数的原型:constructor.prototype
  2. 获取对象的原型:Object.getPrototypeOf(obj)
  3. 沿着原型链向上查找:
    • 如果对象原型 === 构造函数原型:返回 true
    • 如果对象原型为 null:返回 false(到达原型链顶端)
    • 否则,继续查找对象原型的原型
  4. 重复步骤 3 直到找到匹配或到达原型链顶端

示例

typescript
myInstanceof([], Array)       // true
myInstanceof({}, Object)      // true
myInstanceof([], Object)      // true(Array 继承自 Object)
myInstanceof('abc', String)   // false(基本类型)

模拟 instanceof 的行为,通过遍历原型链实现。