object.getprototypeof 返回对象的直接原型,用于逐层验证继承关系;配合 isprototypeof 可判断间接继承;class 继承中需注意类与实例原型链的三层结构。

Object.getPrototypeOf 是检查对象原型链最直接的方法,它返回指定对象的原型(即内部 [[Prototype]] 指向的对象),可用于逐层验证是否构成预期的继承关系。
获取并比对原型对象
调用 Object.getPrototypeOf(obj) 得到 obj 的直接原型。若想确认 Child 是否继承自 Parent,可检查:
- Object.getPrototypeOf(childInstance) === Parent.prototype(适用于构造函数继承)
- 或更通用的方式:Object.getPrototypeOf(childInstance) === parentPrototype(当 parentPrototype 是已知原型对象时)
沿原型链向上追溯
原型链可能多层,需连续调用 getPrototypeOf 直到返回 null:
const p1 = Object.getPrototypeOf(obj)const p2 = Object.getPrototypeOf(p1)-
const p3 = Object.getPrototypeOf(p2)—— 若为null,说明已到原型链顶端
过程中可打印或断言每层结果,确认 Parent.prototype、Object.prototype 等是否按序出现。
配合 isPrototypeOf 判断间接继承
Object.getPrototypeOf 返回的是“上一级”,而 Parent.prototype.isPrototypeOf(childInstance) 可一次性判断 Parent.prototype 是否在 childInstance 的整个原型链中(包括直接或间接)。两者互补:
- getPrototypeOf 精确查某一层
- isPrototypeOf 快速验存在性
注意 class 和 extends 下的特殊情况
使用 class Child extends Parent 时:
- Object.getPrototypeOf(Child) === Parent(类本身继承自父类)
- Object.getPrototypeOf(new Child()) === Child.prototype
- Object.getPrototypeOf(Child.prototype) === Parent.prototype(这才是实例继承的关键链路)
漏掉 .prototype 层是常见错误。











