📅  最后修改于: 2023-12-03 15:11:33.766000             🧑  作者: Mango
ES6 引入了类(class)这个概念,使得 JavaScript 的面向对象编程更加方便和易于理解。在 ES6 之前,JavaScript 使用的是“构造函数”创建对象,而这种方式有很多限制和不足。类的出现使得代码更加简洁易读,更容易组织和维护,而且更符合面向对象编程的思想。
类的基本语法使用关键字 class
:
class Animal {
constructor(name) {
this.name = name
}
speak() {
console.log(`${this.name} makes a noise.`);
}
}
上面的代码定义了一个名为 Animal
的类。类的构造函数由 constructor
关键字指定,其他方法都定义在类的原型中。在上面的例子中,Animal
类有一个 speak()
方法,用来输出动物的名称和发出的声音。
类定义好之后,我们可以使用 new
关键字来创建对象:
const cat = new Animal('cat');
cat.speak(); // output: "cat makes a noise."
ES6 的类内建继承机制,可以使用 extends
关键字来实现继承特性:
class Dog extends Animal {
constructor(name) {
super(name);
}
speak() {
console.log(`${this.name} barks.`);
}
}
const dog = new Dog('dog');
dog.speak(); // output: "dog barks."
上述代码中,我们定义了一个 Dog
类通过 extends
关键字继承了 Animal
类。同时 Dog
类重写了 speak()
方法,输出的是狗的叫声。
定义在类上而不是实例上,只能由类名直接调用的方法称为“静态方法”:
class Animal {
static type() {
console.log('I am an animal');
}
speak() {
console.log(`${this.name} makes a noise.`);
}
}
Animal.type(); // output: "I am an animal"
上述代码中,我们定义了一个 Animal
类的静态方法 type()
。调用该方法不需要实例化对象,直接使用类名调用即可。
ES6 的类关键字使得 JavaScript 拥有了更加现代化的面向对象编程能力,运用起来也十分简明清晰。使用类可以更好地组织代码和面向对象编程地思考问题,在团队开发或项目维护中也有很大的作用。