📅  最后修改于: 2023-12-03 15:11:34.045000             🧑  作者: Mango
在 JavaScript 中,类用于创建对象的蓝图。类中包含属性和方法,可以通过实例化类来创建对象。
使用 class
关键字来定义一个类,类名的首字母通常大写。类的花括号内包含属性和方法的定义。
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
greeting() {
console.log(`Hello, my name is ${this.name} and I'm ${this.age} years old`);
}
}
上面的代码定义了一个名为 Person
的类,包含 name
和 age
两个属性,以及 greeting
方法用于输出问候语。constructor
方法是类的构造函数,用于创建对象时初始化属性。
要创建类的实例,使用 new
关键字并传入合适的参数来调用类的构造函数。
const john = new Person('John', 30);
john.greeting(); // 输出 "Hello, my name is John and I'm 30 years old"
上面的代码创建了一个名为 john
的 Person
实例,并调用了其 greeting
方法。
类中声明的属性可以在构造函数中初始化,也可以在类的其他方法中访问和修改。
class Rectangle {
constructor(width, height) {
this.width = width;
this.height = height;
}
getArea() {
return this.width * this.height;
}
get perimeter() {
return 2 * (this.width + this.height);
}
set perimeter(value) {
const factor = value / (2 * (this.width + this.height));
this.width *= factor;
this.height *= factor;
}
}
const rect = new Rectangle(10, 5);
console.log(rect.width); // 输出 10
console.log(rect.getArea()); // 输出 50
rect.perimeter = 30;
console.log(rect.width); // 输出 15
console.log(rect.height); // 输出 7.5
console.log(rect.perimeter); // 输出 30
上面的代码定义了一个名为 Rectangle
的类,包含 width
和 height
两个属性,以及 getArea
和 perimeter
方法。getArea
方法计算矩形的面积,perimeter
属性和设置器用于计算和修改矩形的周长。
类中可以定义多个方法,方法和普通函数的定义方式相同。
class Car {
constructor(make, model, year) {
this.make = make;
this.model = model;
this.year = year;
this.speed = 0;
}
accelerate() {
this.speed += 10;
}
brake() {
this.speed -= 10;
}
getSpeed() {
return this.speed;
}
}
const myCar = new Car('Toyota', 'Corolla', 2020);
myCar.accelerate();
console.log(myCar.getSpeed()); // 输出 10
myCar.brake();
console.log(myCar.getSpeed()); // 输出 0
上面的代码定义了一个名为 Car
的类,包含 make
、model
、year
和 speed
四个属性,以及 accelerate
、brake
和 getSpeed
三个方法。accelerate
方法加速,brake
方法减速,getSpeed
方法返回当前速度。
JavaScript 中的类是一种常用的编程模式,用于封装和重用代码。类中包含属性和方法的定义,可以通过实例化类来创建对象。了解类的定义和使用方法,可以更加高效地开发 JavaScript 应用程序。