Node REPL 是验证模块导出类与函数原型链关系最直接的工具。它支持实时检查 constructor、__proto__ 和 prototype,确认继承关系(如 Object.getPrototypeOf(AdvancedCalculator.prototype) === Calculator.prototype),并区分类与普通函数的原型行为。

Node REPL 是验证模块导出内容(尤其是类与函数的原型链关系)最直接的工具之一。它能跳过打包、编译等环节,让你在运行时实时 inspect 对象结构、constructor、__proto__ 和 prototype 链,快速确认继承是否按预期建立。
加载模块并检查导出的类实例
假设你有一个模块 math-utils.js:
class Calculator {
add(a, b) { return a + b; }
}
<p>class AdvancedCalculator extends Calculator {
multiply(a, b) { return a * b; }
}</p><p>function createCalc() {
return new Calculator();
}</p><p>module.exports = { Calculator, AdvancedCalculator, createCalc };
在 Node REPL 中操作:
- 启动 REPL:
node - 加载模块:
const { Calculator, AdvancedCalculator, createCalc } = require('./math-utils.js'); - 创建实例并验证原型链:
const calc = new Calculator();calc.__proto__ === Calculator.prototype // truecalc.constructor === Calculator // true
验证类之间的继承关系
ES6 类继承本质是基于 Object.setPrototypeOf(Child.prototype, Parent.prototype),可通过以下方式确认:
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 检查子类原型的上一级:
Object.getPrototypeOf(AdvancedCalculator.prototype) === Calculator.prototype // true - 检查实例是否可向上追溯:
new AdvancedCalculator() instanceof Calculator // true - 查看完整原型链:
Object.getPrototypeOf(Object.getPrototypeOf(new AdvancedCalculator())) === Calculator.prototype // true
区分函数导出与类导出的原型行为
注意:普通函数(如 createCalc)本身不是构造函数,不自带 prototype 属性(除非手动添加),也不参与 instanceof 判断:
createCalc.prototype // undefined-
createCalc instanceof Function // true(它是函数对象) -
createCalc() instanceof Calculator // true(返回值是实例,但函数自身无继承链)
因此,只对 class 或显式使用 function 构造器定义的对象才需重点检查其 prototype 与 __proto__ 链。
用 util.inspect 查看深层原型结构
默认 REPL 输出较简略。启用深度检查可看清嵌套原型:
const util = require('util');util.inspect(new AdvancedCalculator(), { showHidden: true, depth: 5 })- 重点关注
__proto__: Calculator {...}及其内部的__proto__: Object {...}是否连贯

















