Classes in JavaScript
JS 的对象和继承形式截然不同,类只是一种语法糖,使 JS 的工作方式更像传统的面向对象语言(优点/缺点)。类实际上是“特殊函数”,正如你可以定义函数表达式和函数声明一样,类语法包含两个部分:类表达式和类声明。
1. 类的基本结构
class ClassName {
// 构造函数,用于初始化对象
constructor(参数) {
this.属性 = 参数;
}
// 方法
方法名() {
// 方法逻辑
}
}2. 属性与方法
class Person {
constructor(name, age) {
this.name = name; // 实例属性
this.age = age;
}
sayHi() { // 实例方法
console.log(`Hi, I'm ${this.name}, ${this.age} years old.`);
}
}
let p1 = new Person("Alice", 25);
p1.sayHi(); // Hi, I'm Alice, 25 years old.3. 类的继承(extends)
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} makes a sound.`);
}
}
class Dog extends Animal {
speak() {
console.log(`${this.name} barks.`);
}
}
let dog = new Dog("Buddy");
dog.speak(); // Buddy barks.extends用于继承父类。- 子类可以重写父类方法,也可以通过
super()调用父类构造函数或方法。
4. 静态方法(static)
静态方法属于类本身,不属于实例。
class MathTool {
static add(a, b) {
return a + b;
}
}
console.log(MathTool.add(3, 4)); // 7
// MathTool 的实例无法调用 addGetter / Setter
Example for class
width和height是子类实例属性,不在父类定义。- 在 JavaScript 里,不需要提前声明,直接在构造函数里
this.xxx = ...就能创建