ES6的class是构造函数的语法糖,底层基于原型链;必须用class关键字定义并用new实例化,constructor为默认初始化方法,其他方法自动挂载到prototype上。

ES6 的 class 是构造函数的语法糖,写法更清晰、更接近传统面向对象语言,但底层仍是基于原型链。定义类必须用 class 关键字,且必须配合 new 实例化;不能直接调用。
类的基本定义结构
类名建议首字母大写(如 Person),内部至少包含一个 constructor 方法(可省略,会自动生成空构造函数)。方法之间不加逗号,也不写 function 关键字:
-
class后紧跟类名,花括号内写内容 -
constructor()是唯一默认执行的初始化方法,用于设置实例属性 - 其他方法(如
sayHello())自动挂载到类的prototype上,所有实例共享 - 类声明不会被提升(hoisting),必须先定义后使用
构造函数 constructor 的写法要点
constructor 不是普通方法,它是类的入口,决定实例创建时的行为:
- 每个类最多只能有一个
constructor,重复定义会报错 - 若未显式声明,JavaScript 会自动添加一个空的
constructor() {} - 必须用
this绑定实例属性(如this.name = name),否则属性不会出现在实例上 - 不能单独调用
constructor,只能通过new MyClass(...)触发
一个完整可运行的例子
下面定义一个 Car 类,包含构造函数和两个实例方法:
constructor(brand, year) {
this.brand = brand;
this.year = year;
}
getInfo() {
return `${this.brand} (${this.year})`;
}
start() {
console.log('Engine running...');
}
}
const myCar = new Car('Tesla', 2024);
console.log(myCar.getInfo()); // Tesla (2024)
myCar.start(); // Engine running...
常见易错点提醒
- 类体中方法不能用
function声明,写成function getInfo() {...}会报错 - 方法间加了逗号(如
getInfo() {}, start() {})会导致语法错误 - 类名不能重复声明(
class A{}; class A{}报错),但可以用类表达式赋值给变量来绕过 -
typeof Car返回"function",说明类本质仍是函数,Car === Car.prototype.constructor为真
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











