返回
深入浅出,为你揭开Class的基本语法面纱
前端
2023-12-02 13:48:15
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.`);
}
static createPerson(name, age) {
return new Person(name, age);
}
}
const person1 = new Person('John', 30);
person1.greet(); // Hello, my name is John and I am 30 years old.
const person2 = Person.createPerson('Jane', 25);
person2.greet(); // Hello, my name is Jane and I am 25 years old.
在这个例子中,我们定义了一个名为 Person
的类,它包含一个构造函数、一个实例方法 greet()
和一个静态方法 createPerson()
.
- 构造函数
constructor()
在创建类的实例时被调用,它用于初始化类的属性。在这个例子中,我们初始化了name
和age
属性。 - 实例方法
greet()
可以被类的实例调用,它用于操作类的属性和行为。在这个例子中,greet()
方法打印出name
和age
的值。 - 静态方法
createPerson()
可以直接通过类名调用,它用于创建类的实例。在这个例子中,createPerson()
方法创建了一个新的Person
实例并返回它。
类的继承
类可以继承其他类的属性和方法。通过使用 extends
,我们可以创建一个子类,它继承了父类的所有属性和方法。
class Employee extends Person {
constructor(name, age, salary) {
super(name, age);
this.salary = salary;
}
getSalary() {
return this.salary;
}
}
const employee1 = new Employee('John', 30, 50000);
console.log(employee1.getSalary()); // 50000
在这个例子中,我们定义了一个名为 Employee
的类,它继承了 Person
类。Employee
类包含一个构造函数、一个实例方法 getSalary()
和一个静态方法 createEmployee()
.
- 构造函数
constructor()
在创建类的实例时被调用,它用于初始化类的属性。在这个例子中,我们初始化了name
,age
和salary
属性。 - 实例方法
getSalary()
可以被类的实例调用,它用于操作类的属性和行为。在这个例子中,getSalary()
方法返回salary
的值。 - 静态方法
createEmployee()
可以直接通过类名调用,它用于创建类的实例。在这个例子中,createEmployee()
方法创建了一个新的Employee
实例并返回它。
类的多态
多态是指子类可以继承父类的属性和方法,并可以重写父类的方法。重写的方法在子类中具有不同的实现。
class Animal {
constructor(name) {
this.name = name;
}
makeSound() {
console.log('...');
}
}
class Dog extends Animal {
constructor(name) {
super(name);
}
makeSound() {
console.log('Woof!');
}
}
class Cat extends Animal {
constructor(name) {
super(name);
}
makeSound() {
console.log('Meow!');
}
}
const dog1 = new Dog('Lucky');
dog1.makeSound(); // Woof!
const cat1 = new Cat('Kitty');
cat1.makeSound(); // Meow!
在这个例子中,我们定义了一个名为 Animal
的类,它包含一个构造函数和一个实例方法 makeSound()
. Dog
和 Cat
类都是 Animal
类的子类。它们都继承了 Animal
类的属性和方法,并重写了 makeSound()
方法。
Dog
类重写了makeSound()
方法,使它在打印 "Woof!"。Cat
类重写了makeSound()
方法,使它在打印 "Meow!"。
当我们创建一个 Dog
实例并调用 makeSound()
方法时,它会打印 "Woof!"。当我们创建一个 Cat
实例并调用 makeSound()
方法时,它会打印 "Meow!"。这是因为子类可以重写父类的方法,并在子类中具有不同的实现。
总结
class 语法是 JavaScript 语言中创建对象的一个语法糖。它提供了创建和使用类的更简洁和直观的方式。本文从基本语法开始,一步一步深入解析 class 的用法,让你轻松掌握 class 语法,在 JavaScript 项目中如鱼得水。