返回
JavaScript 中的类——深入 JavaScript 学习之路 (二)
前端
2023-12-22 11:44:43
在 JavaScript 世界中,类是一门必不可少的技术,它允许我们创建具有相同行为和属性的对象集合。在 JavaScript 中引入类之前,我们主要使用函数和构造函数来模拟类。然而,ES6 的出现带来了一个正式的类语法,简化了类的创建和使用,并消除了使用构造函数模拟类的缺点。
类 vs 构造函数
构造函数是一种特殊类型的函数,它用于创建对象。要使用构造函数创建对象,我们使用 new
。构造函数的主要优点是,它允许我们创建具有私有属性和方法的对象。然而,构造函数也存在一些缺点,例如:
- 构造函数无法继承其他构造函数。
- 构造函数语法笨拙且不直观。
ES6 中的类
ES6 引入了 class
关键字,它提供了更简洁、更直观的方式来创建类。类是语法糖,它实际上仍然编译成构造函数。然而,类提供了几个主要优势:
- 继承: 类支持继承,允许我们创建子类,继承父类的属性和方法。
- 语法简洁: 类语法比构造函数语法更简洁、更直观。
- 私有和公共成员: 类允许我们定义私有和公共成员,这有助于提高代码的封装性。
创建类
要创建类,我们使用 class
关键字,后跟类名。类的主体包含类的属性和方法。
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
greet() {
console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
}
}
实例化类
要实例化类,我们使用 new
关键字,后跟类名和构造函数参数。
const person1 = new Person('John', 30);
person1.greet(); // Output: Hello, my name is John and I am 30 years old.
继承
为了创建子类,我们使用 extends
关键字,后跟父类的名称。子类继承父类的所有属性和方法。
class Student extends Person {
constructor(name, age, major) {
super(name, age); // 调用父类的构造函数
this.major = major;
}
study() {
console.log(`${this.name} is studying ${this.major}.`);
}
}
私有和公共成员
类允许我们定义私有和公共成员。私有成员只能在类的内部访问,而公共成员可以在类的内部和外部访问。要定义私有成员,我们在成员名称前加上 #
符号。
class Person {
#name; // 私有属性
constructor(name, age) {
this.#name = name; // 只能在类的内部访问
this.age = age; // 公共属性
}
}
结论
ES6 中的类提供了一种简单、直观的方式来创建和使用类。它们消除了使用构造函数模拟类的缺点,并提供了几个主要优势,例如继承、更简洁的语法以及私有和公共成员。理解 JavaScript 中的类对于编写可重用、可维护和可扩展的代码至关重要。
**