返回

深入浅出,为你揭开Class的基本语法面纱

前端

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() 在创建类的实例时被调用,它用于初始化类的属性。在这个例子中,我们初始化了 nameage 属性。
  • 实例方法 greet() 可以被类的实例调用,它用于操作类的属性和行为。在这个例子中,greet() 方法打印出 nameage 的值。
  • 静态方法 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, agesalary 属性。
  • 实例方法 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(). DogCat 类都是 Animal 类的子类。它们都继承了 Animal 类的属性和方法,并重写了 makeSound() 方法。

  • Dog 类重写了 makeSound() 方法,使它在打印 "Woof!"。
  • Cat 类重写了 makeSound() 方法,使它在打印 "Meow!"。

当我们创建一个 Dog 实例并调用 makeSound() 方法时,它会打印 "Woof!"。当我们创建一个 Cat 实例并调用 makeSound() 方法时,它会打印 "Meow!"。这是因为子类可以重写父类的方法,并在子类中具有不同的实现。

总结

class 语法是 JavaScript 语言中创建对象的一个语法糖。它提供了创建和使用类的更简洁和直观的方式。本文从基本语法开始,一步一步深入解析 class 的用法,让你轻松掌握 class 语法,在 JavaScript 项目中如鱼得水。