ES6的class和extends本质仍是原型链继承,但语法更简洁:继承声明直观、强制super()调用父构造函数、方法自动挂载prototype、static定义静态成员、super直接调用父方法。

ES6 的 class 和 extends 并没有改变 JavaScript 的继承本质,它仍是基于原型链,但确实在语法层面做了多项明确、直接的简化,让开发者更少出错、更易读写。
继承声明更直观
不用手动操作原型对象,也不用反复写 Child.prototype = new Parent() 或 Object.create(Parent.prototype)。只需一行 class Child extends Parent,语义清晰,意图一目了然。
构造函数调用自动统一
子类中必须显式调用 super(),否则报错;这强制保证父类构造逻辑被正确执行,避免 ES5 中漏掉 Parent.call(this) 导致属性缺失的问题。
- 不写
super()→ 直接 SyntaxError - 写了
super()→ 自动绑定this,且确保在子类构造函数中早于任何this访问
方法定义无需重复绑定 prototype
所有在 class 内部定义的非静态方法,默认添加到类的 prototype 上,不可枚举、不可重写,省去手动赋值步骤:
用于 inference.sh 的 JavaScript/TypeScript SDK,可运行 AI 应用、构建代理、集成 150+ 模型。包名:@inferencesh/sdk(npm install),完整 TypeScript 支持。
- ES5:
Child.prototype.sayName = function() { ... }; - ES6:
class Child { sayName() { ... } }→ 自动挂载
静态方法与属性声明更自然
用 static 关键字即可定义静态成员,无需像 ES5 那样单独在构造函数对象上赋值:
- ES5:
Child.getVersion = function() { return '1.0'; }; - ES6:
class Child { static getVersion() { return '1.0'; } }
内置支持 super 关键字调用父类方法
可在实例方法和静态方法中直接用 super.xxx() 调用父类对应方法,无需手动通过 Parent.prototype.xxx.call(this) 绕路,也避免因原型链变更导致调用失效的风险。
例如:super.sayHi() 明确指向父类原型上的 sayHi,语义稳定、书写简洁。

















