📜  类中的道具 - Javascript (1)

📅  最后修改于: 2023-12-03 15:27:26.930000             🧑  作者: Mango

类中的道具 - Javascript

Javascript是一种面向对象的编程语言,类是其中的一种重要机制。类为对象提供了一些特性和行为,这些特性和行为通常被称为“道具”。

定义类

Javascript中可以使用class关键字来定义类,类的定义通常包含构造函数和方法。

构造函数用于创建一个新的类实例,并为类实例分配属性和方法。方法是指操作类属性的一组函数。

以下是一个简单的Javascript类定义的例子:

class Car {
  constructor(model, year) {
    this.model = model;
    this.year = year;
  }

  start() {
    console.log(this.model + ' is ' + 'starting...');
  }
}

在上面的例子中,Car类有两个属性: modelyear,以及一个方法start()

对象的构造与使用

要使用类,我们需要先创建新实例,这是通过调用构造函数来实现的。

let myCar = new Car('Tesla', 2022);

在上面的例子中,我们使用new关键字来创建一个新的Car实例,并将它们存储在myCar变量中。

要调用类的方法,我们可以简单地使用点.符号:

myCar.start();

这将启动我们的汽车,并在控制台中输出一些消息。

属性

除了方法外,类还包含属性。属性是指存储数据值的类特性或特性值。我们可以直接实例化类属性,也可以在构造函数中给它们赋初始值。

在上面的例子中,modelyear都被定义为类的属性。

我们可以像下面这样访问和修改这些属性:

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