es6 class是语法糖,提升可读性与结构紧凑性;统一构造逻辑、方法归属与继承表达;需结合解构等特性协同提效,但应避免在无状态场景滥用。

ES6 Class 语法糖本身不是功能增强,而是让面向对象逻辑更直观、结构更紧凑,从而直接提升可读性。关键不在于“用了 class”,而在于用对方式。
用 class 统一构造逻辑和行为归属
把实例属性初始化、原型方法、静态方法都收在一个块里,避免 ES5 中构造函数、prototype 赋值、Object.assign 静态属性四处散落的问题。
- 构造函数只管初始化:所有实例属性都在
constructor里用this.xxx =明确声明 - 方法集中定义:
sayHi()、update()等写在类体内,一眼看出这是该类的“能力” - 静态方法归位:如
Person.createAdmin()直接挂类上,语义比PersonUtils.makeAdmin()更自然
继承关系一目了然
用 extends + super() 替代手动操作 prototype 和修正 constructor,大幅降低理解门槛。
-
class Student extends Person这一行就表达了“Student 是 Person 的一种” - 子类
constructor必须首行调用super(),强制开发者关注父类初始化顺序 - 方法重写清晰可见:
study()在子类中定义,覆盖或补充父类行为,无需查原型链路径
配合其他 ES6 特性协同提效
Class 不是孤立使用的,结合解构、默认参数、模板字符串等,能让内部逻辑也更干净。
- 构造器支持默认值:
constructor(name = '匿名', age = 0),省去条件判断 - 方法内用模板字符串拼接:
return `ID: ${this.id}, Name: ${this.name}`,比字符串连接易读 - 解构传参用于配置类:
constructor({ name, level = 'user', permissions = [] })
注意边界:别把 class 当万能胶
Class 解决的是“有状态、可复用、需继承”的场景。不该用时硬套,反而损害可读性。
- 纯工具函数(无实例状态)不用 class 包一层,直接导出函数更直白
- 对象字面量中的方法简写(如 Vue 的
methods: { click() {} })不是 class 语法,别混淆 - 需要动态绑定
this或频繁改变上下文的场景,优先考虑箭头函数或显式bind,而非依赖 class 方法隐式绑定











