myInstanceof
手动实现的 instanceof 操作符,用于检查对象是否为某个构造函数的实例。
函数签名
typescript
function myInstanceof(obj: any, constructor: Function): boolean参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
obj | any | 是 | 要检查的对象 |
constructor | Function | 是 | 构造函数 |
返回值
| 类型 | 说明 |
|---|---|
boolean | true 表示是该构造函数的实例,false 表示不是 |
工作原理
- 获取构造函数的原型:
constructor.prototype - 获取对象的原型:
Object.getPrototypeOf(obj) - 沿着原型链向上查找:
- 如果对象原型 === 构造函数原型:返回 true
- 如果对象原型为 null:返回 false(到达原型链顶端)
- 否则,继续查找对象原型的原型
- 重复步骤 3 直到找到匹配或到达原型链顶端
示例:
typescript
myInstanceof([], Array) // true
myInstanceof({}, Object) // true
myInstanceof([], Object) // true(Array 继承自 Object)
myInstanceof('abc', String) // false(基本类型)模拟 instanceof 的行为,通过遍历原型链实现。