简述ES6 Class、extends是什么,有什么作用?

在ES6中,引入了classextends关键字,标志着JavaScript正式支持基于类的面向对象编程。这两个特性提供了一种清晰、简洁的语法来创建对象和实现继承,与此前基于原型的继承相比,这种新语法使得对象模型的定义更加直观和易于理解。

Class(类)

class关键字用于定义一个类。类是创建对象的蓝图,它可以包含构造函数、属性和方法。使用类,可以创建具有特定初始状态和行为的对象实例。

作用:
  • 封装:类允许将数据(属性)和操作数据的方法封装在一起。
  • 创建对象实例:通过new关键字,可以基于类创建新的对象实例。
  • 代码组织:类提供了一种组织和封装代码的方式,有助于构建复杂的应用程序。

示例:

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.`);
  }
}

const person1 = new Person('John', 30);
person1.greet(); // 输出: Hello, my name is John and I am 30 years old.

Extends(继承)

extends关键字用于在类之间创建继承关系,允许子类继承父类的属性和方法。通过继承,可以创建一个共享父类属性和方法的新类,同时还可以添加或修改这些属性和方法。

作用:
  • 代码复用:继承允许子类重用父类的代码,减少重复代码。
  • 建立层次关系:通过继承,可以建立类之间的层次关系,有助于组织和管理代码。
  • 多态:子类可以覆盖(override)父类的方法,提供特定于子类的实现,这是多态的一种表现。

示例:

class Student extends Person {
  constructor(name, age, grade) {
    super(name, age); // 调用父类的constructor
    this.grade = grade;
  }

  study() {
    console.log(`I am studying in grade ${this.grade}.`);
  }
}

const student1 = new Student('Jane', 20, '12th');
student1.greet(); // 输出: Hello, my name is Jane and I am 20 years old.
student1.study(); // 输出: I am studying in grade 12th.

通过classextends,ES6提供了一种更加简洁和直观的方式来实现基于类的继承,有助于构建和维护大型JavaScript应用程序。

发表评论

后才能评论