es6 的 class 是对构造函数的语法封装,基于原型链但约束更强;constructor 初始化实例属性,必须用 this 赋值且不能为箭头函数;实例方法通过对象调用,static 方法挂载类本身;继承需 extends + super,子类 constructor 中 super 必须首行调用;class 不可直接调用、不提升、方法不可枚举、默认严格模式。

ES6 的 class 不是全新机制,而是对传统构造函数的语法封装,让面向对象写法更直观、结构更清晰——它底层仍基于原型链,但约束更强、语义更明确。
类的基本定义与 constructor 作用
用 class 关键字声明类,内部可选写 constructor 方法来初始化实例属性。这个方法在 new 实例时自动调用:
- 不写
constructor,JS 会自动插入空的constructor() {},但无法传参或初始化属性 - 显式写了
constructor,就必须用它接收参数并赋值给this,比如this.name = name -
constructor必须是普通函数,不能是箭头函数(没有自己的this)
实例方法与静态方法的区别
类体中直接定义的方法默认是实例方法,加 static 前缀的是静态方法:
- 实例方法通过
new MyClass()创建的对象调用,可访问this和实例属性 - 静态方法挂载在类本身上,只能用
MyClass.methodName()调用,this指向类而非实例 - 静态方法不能被实例调用,否则报
TypeError
继承必须用 extends + super
子类通过 extends 继承父类,且只要写了 constructor,就必须在第一行调用 super():
-
super()用于执行父类构造函数,把参数传给父类初始化逻辑 -
super必须在访问this之前调用,否则报ReferenceError - 子类未写
constructor,则默认继承父类构造函数,无需手动super
几个关键行为限制
class 不是“宽松”的语法糖,它有几条硬性规则:
- 必须用
new调用,直接Person()会抛TypeError - 类声明不会被提升(hoisting),必须先定义再使用
- 类体内方法默认不可枚举(
enumerable: false),而手动挂到prototype上的方法默认可枚举 - 类默认启用严格模式,无需额外声明
"use strict"
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











