📜  类关键字 es6 - Javascript (1)

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

ES6 类关键字

在JavaScript中,ES6引入了类机制,这使得类似面向对象语言中的类的概念也可在JavaScript中使用。本文将介绍ES6类关键字的主要特性。

定义类

为定义一个类,可以使用class关键字。例如,下面的代码定义了一个名为Person的类:

class Person {
  constructor(name) {
    this.name = name;
  }
  
  sayHello() {
    console.log(`Hi, my name is ${this.name}`);
  }
}

在上面的代码中,Person类包括一个构造函数和一个名为sayHello的方法。构造函数用于创建新的对象,而sayHello方法用于打印出对象的名字。我们可以使用下面的代码来创建一个Person对象并调用它的sayHello方法:

const person = new Person('John');
person.sayHello(); // 输出 'Hi, my name is John'
继承

在类的继承方面,ES6也提供了支持。可以通过extends关键字来继承一个类。例如,下面的代码展示了如何创建一个名为Student的类,它继承自Person类:

class Student extends Person {
  constructor(name, grade) {
    super(name);
    this.grade = grade;
  }
  
  getGrade() {
    console.log(`I'm in grade ${this.grade}`);
  }
}

在上面的代码中,Student类包括一个构造函数和一个名为getGrade的方法。构造函数调用父类的构造函数来创建一个新的对象,同时还设置了grade属性。getGrade方法用于打印出学生所在的年级。我们可以使用下面的代码来创建一个Student对象并调用它的sayHello和getGrade方法:

const student = new Student('John', 6);
student.sayHello(); // 输出 'Hi, my name is John'
student.getGrade(); // 输出 'I'm in grade 6'
静态方法

ES6类还支持静态方法,这些方法是在类本身上定义的,而不是在创建的对象实例上。可以使用static关键字来定义一个静态方法。例如,下面的代码展示了如何创建一个名为sayHi的静态方法:

class Person {
  constructor(name) {
    this.name = name;
  }
  
  static sayHi() {
    console.log('Hi there!');
  }
  
  sayHello() {
    console.log(`Hi, my name is ${this.name}`);
  }
}

在上面的代码中,sayHi方法没有使用this关键字,因为它调用时没有对象实例。我们可以使用下面的代码来调用这个静态方法:

Person.sayHi(); // 输出 'Hi there!'
get和set

ES6类还支持使用get和set关键字来定义属性。例如,下面的代码展示了如何创建一个名为Person的类,并使用get和set方法来定义一个名为age的属性:

class Person {
  constructor(name, age) {
    this.name = name;
    this._age = age;
  }
  
  get age() {
    return this._age;
  }
  
  set age(value) {
    if (value > 0 && value < 120) {
      this._age = value;
    }
  }
  
  sayHello() {
    console.log(`Hi, my name is ${this.name}`);
  }
}

在上面的代码中,age属性的值存储在一个名为_age的私有变量中。get和set方法被用来访问和修改age属性。注意,在这里set方法进行了范围检查,确保属性值在0到120之间。我们可以使用下面的代码来创建一个Person对象并访问它的age属性:

const person = new Person('John', 25);
console.log(person.age); // 输出 25
person.age = 30;
console.log(person.age); // 输出 30
person.age = 130; // 无效的操作
console.log(person.age); // 输出 30
总结

ES6类关键字为JavaScript提供了类似于传统面向对象语言的类概念支持。通过扩展和静态方法,ES6类可以定义更复杂的行为。使用get和set方法,可以控制访问对象的属性。了解ES6类关键字的基础知识将使你能够更加流畅地开发JavaScript程序。