javaScript中的类是es6语法糖,基于原型机制提供更清晰的面向对象编程方式。1. 使用class定义类,包含constructor初始化属性和实例方法;2. 通过extends实现继承,子类需调用super()初始化父类;3. 子类可重写父类方法并用super调用原方法;4. Static定义静态方法,属类本身不可被实例调用。该语法提升代码可读性与结构清晰度。

javascript 中的类(Class)是 ES6 引入的一种语法糖,让开发者可以用更接近传统面向对象语言的方式来创建对象和实现继承。虽然 JavaScript 基于原型(prototype)的机制没有改变,但 class 的写法更加清晰、易读。
类的基本语法
使用 class 关键字可以定义一个类。类中通常包含一个 constructor 方法,用于初始化实例属性,还可以定义其他方法。
class Person { constructor(name, age) { this.name = name; this.age = age; } greet() { console.log(`Hello, I'm ${this.name}`); } } const person1 = new Person("Alice", 25); person1.greet(); // 输出: Hello, I'm Alice
上面的例子中,Person 是一个类,通过 new 创建实例。constructor 构造函数在实例化时自动调用。
类的继承(extends)
ES6 提供了 extends 关键字来实现类的继承,子类可以继承父类的属性和方法。
立即学习“Java免费学习笔记(深入)”;
class Student extends Person { constructor(name, age, grade) { super(name, age); // 调用父类构造函数 this.grade = grade; } study() { console.log(`${this.name} is studying.`); } } const student1 = new Student("Bob", 20, "A"); student1.greet(); // 继承自 Person:Hello, I'm Bob student1.study(); // Student 自有方法:Bob is studying.
子类必须在 constructor 中调用 super(),否则无法使用 this。super 指向父类的构造函数或原型方法。
方法重写与 super 调用
子类可以重写父类的方法。如果想在重写的同时调用父类的方法,可以用 super.方法名()。
class Teacher extends Person { constructor(name, age, subject) { super(name, age); this.subject = subject; } greet() { super.greet(); // 调用父类的 greet console.log(`I teach ${this.subject}.`); } } const teacher1 = new Teacher("Charlie", 35, "Math"); teacher1.greet(); // 输出: // Hello, I'm Charlie // I teach Math.
静态方法
使用 static 关键字定义静态方法,属于类本身,不能通过实例调用。
class MathUtils { static add(a, b) { return a + b; } } console.log(MathUtils.add(2, 3)); // 5 // const utils = new MathUtils(); // utils.add(2, 3); // 错误:add 不是实例方法
基本上就这些。class 让 JavaScript 的面向对象编程更直观,但底层依然是原型链。掌握 class 和 extends,能让你写出结构更清晰、易于维护的代码。


