es6 class 是原型继承的语法糖,核心在于理解设计原理及特性配合:constructor 初始化实例、extends+super 实现继承、static 区分静态/实例方法、getter/setter 与私有字段 # 实现封装。

ES6 的 class 不是新对象模型,而是对原型继承的语法封装——它让面向对象更直观,却不改变 JavaScript 的底层逻辑。真正掌握它,关键不在“怎么写”,而在“为什么这样设计”以及“哪些特性必须配合使用”。
构造函数与实例初始化:this 绑定的前提
每个类隐含一个 constructor,它在 new 调用时自动执行,负责初始化实例属性。必须注意:
-
this只在constructor或实例方法中有效;类体顶层不能直接写this.name = 'xxx' - 若子类定义了
constructor,必须第一行调用super(),否则报错 - 未显式声明
constructor时,JavaScript 自动插入空构造函数:constructor() {}
继承与 super:不只是调用父类构造器
extends 建立原型链关系,super 是打通父子逻辑的关键桥梁:
-
super()在子类构造函数中调用父类构造函数,传递必要参数 -
super.methodName()可在子类方法中明确调用父类同名方法,实现逻辑复用或扩展 - 子类实例既能访问父类原型上的方法,也能拥有自己新增或覆盖的方法
静态方法与实例方法:职责分离的自然体现
static 关键字把方法绑定到类本身,而非实例:
- 静态方法适合工具型操作,比如工厂函数
Person.createAdult()、数据校验Validator.isValidEmail() - 实例方法挂载在原型上,供所有实例共享,处理与具体对象状态相关的行为
- 静态方法无法通过
this访问实例属性,也不能被实例直接调用
Getter/Setter 与私有字段:控制访问与隐藏实现
存取器和私有字段(#field)共同构成现代封装实践:
-
get/set允许对属性读写添加逻辑,比如数据校验、格式转换、副作用触发 - 私有字段以
#开头,仅限类内部访问,外部不可读写,也不参与 JSON 序列化 - 二者常配合使用:用私有字段存储真实值,用 getter/setter 提供受控接口
不复杂但容易忽略
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











