javascript中class是函数的语法糖,基于原型继承;支持构造器、实例/静态方法、extends继承(需super)、私有字段(#前缀)。

JavaScript 中用 class 语法定义类,本质是函数的语法糖,让面向对象写法更清晰、更接近传统语言(比如 Java 或 Python),但底层仍基于原型继承。
基本 class 定义和实例化
用 class 关键字声明类,内部用 constructor() 方法定义构造逻辑,用普通方法名定义实例方法:
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
<p>greet() {
return <code>Hello, I'm ${this.name}</code>;
}
}</p><p>const alice = new Person('Alice', 30);
console.log(alice.greet()); // "Hello, I'm Alice"
</p>注意:class 声明不会被提升(unlike function declarations),必须先定义再使用;且默认严格模式,无需显式写 "use strict"。
添加静态方法和属性
用 static 关键字定义静态成员,它们属于类本身,不挂在实例上:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
class MathUtils {
static PI = 3.14159;
<p>static double(x) {
return x * 2;
}
}</p><p>console.log(MathUtils.PI); // 3.14159
console.log(MathUtils.double(5)); // 10
// new MathUtils().double(); // ❌ 报错:不是实例方法
</p>继承与 super 的使用
用 extends 实现继承,子类中必须在 constructor 里调用 super()(否则报错),用于初始化父类的 this:
-
super()调用父类构造函数(传参需匹配) -
super.xxx可访问父类的静态/原型属性或方法
class Animal {
constructor(name) {
this.name = name;
}
speak() {
return `${this.name} makes a sound`;
}
}
<p>class Dog extends Animal {
constructor(name, breed) {
super(name); // ✅ 必须先调用
this.breed = breed;
}
speak() {
return super.speak() + ' — woof!'; // ✅ 调用父类方法
}
}</p><p>const dog = new Dog('Buddy', 'Golden');
console.log(dog.speak()); // "Buddy makes a sound — woof!"
</p>私有字段和方法(ES2022+)
用 # 前缀声明私有成员,只能在类内部访问,外部无法读写或继承:
class Counter {
#count = 0; // 私有字段
<p>increment() {
this.#count++;
}</p><p>getCount() {
return this.#count;
}</p><p>// #reset() { ... } // 私有方法(同样以 # 开头)
}</p><p>const c = new Counter();
c.increment();
console.log(c.getCount()); // 1
// console.log(c.#count); // ❌ SyntaxError
</p>私有字段必须在类体顶层声明(不能在方法里),且不可枚举、不可代理、不可反射(Reflect.ownKeys 不返回)。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










