📅  最后修改于: 2023-12-03 15:27:26.930000             🧑  作者: Mango
Javascript是一种面向对象的编程语言,类是其中的一种重要机制。类为对象提供了一些特性和行为,这些特性和行为通常被称为“道具”。
Javascript中可以使用class
关键字来定义类,类的定义通常包含构造函数和方法。
构造函数用于创建一个新的类实例,并为类实例分配属性和方法。方法是指操作类属性的一组函数。
以下是一个简单的Javascript类定义的例子:
class Car {
constructor(model, year) {
this.model = model;
this.year = year;
}
start() {
console.log(this.model + ' is ' + 'starting...');
}
}
在上面的例子中,Car
类有两个属性: model
和year
,以及一个方法start()
。
要使用类,我们需要先创建新实例,这是通过调用构造函数来实现的。
let myCar = new Car('Tesla', 2022);
在上面的例子中,我们使用new
关键字来创建一个新的Car
实例,并将它们存储在myCar
变量中。
要调用类的方法,我们可以简单地使用点.
符号:
myCar.start();
这将启动我们的汽车,并在控制台中输出一些消息。
除了方法外,类还包含属性。属性是指存储数据值的类特性或特性值。我们可以直接实例化类属性,也可以在构造函数中给它们赋初始值。
在上面的例子中,model
和year
都被定义为类的属性。
我们可以像下面这样访问和修改这些属性:
console.log(myCar.model); // output: Tesla
myCar.year = 2023;
console.log(myCar.year); // output: 2023
类还可以有静态属性和方法。静态属性和方法属于类本身,而不是类的实例。
静态方法和属性通常用于在类的实例之间共享数据和行为。
要创建一个静态方法或属性,我们可以使用static
关键字。
以下是一个例子,其中Car
类具有一个静态属性numberOfCars
,以及一个静态方法totalNumberOfCars()
,用于返回创建的类实例的总数:
class Car {
static numberOfCars = 0;
constructor(model, year) {
this.model = model;
this.year = year;
Car.numberOfCars++;
}
static totalNumberOfCars() {
console.log("Total number of cars: "+ Car.numberOfCars);
}
start() {
console.log(this.model + ' is ' + 'starting...');
}
}
对于静态属性和方法,我们可以直接对类进行访问:
console.log(Car.numberOfCars); // output: 0
let myCar = new Car('Tesla', 2022);
console.log(Car.numberOfCars); // output: 1
Car.totalNumberOfCars(); // output: Total number of cars: 1
我们可以看到,numberOfCars
属性在类的实例化时自动增加,而totalNumberOfCars()
方法可以告诉我们总共有多少汽车实例被创建。
类在Javascript中是一种非常有用的工具,它们提供了一种模块化组织代码的方法。类中的道具包括属性和方法以及静态数据和方法,它们都有助于我们更好地管理我们的程序。
完整代码:
class Car {
static numberOfCars = 0;
constructor(model, year) {
this.model = model;
this.year = year;
Car.numberOfCars++;
}
static totalNumberOfCars() {
console.log("Total number of cars: "+ Car.numberOfCars);
}
start() {
console.log(this.model + ' is ' + 'starting...');
}
}
let myCar = new Car('Tesla', 2022);
console.log(myCar.model); // output: Tesla
console.log(Car.numberOfCars); // output: 1
Car.totalNumberOfCars(); // output: Total number of cars: 1