es6 class extends
时间: 2023-11-07 11:54:46 浏览: 156
ES6中的class和extends是用来定义类和实现类的继承的关键字。class关键字用来定义一个类,它的语法糖背后实际上是一个ES5生成实例对象的构造函数。相比于ES5中构造函数的方式,class语法更加简洁明了,更接近于传统的面向对象编程语言的写法。而extends关键字用来实现类的继承,一个类可以继承另一个类的属性和方法。
相关问题
ES6 class基本使用
ES6 class是一种用于定义对象的语法糖,它可以更方便地定义类和继承。
1. 定义类
要定义一个类,可以使用class关键字,后面跟类名,类名通常首字母大写。
```javascript
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
sayHello() {
console.log(`Hello, my name is ${this.name}.`);
}
}
```
上面的代码定义了一个名为Person的类,它有一个构造函数和一个方法sayHello。构造函数接受两个参数name和age,用于初始化对象的属性。sayHello方法用于输出对象的名字。
2. 创建对象
要创建一个类的对象,可以使用new关键字,并传入构造函数需要的参数。
```javascript
const person = new Person('Tom', 18);
console.log(person.name); // 'Tom'
console.log(person.age); // 18
person.sayHello(); // 'Hello, my name is Tom.'
```
上面的代码创建了一个名为person的对象,它的名字是Tom,年龄是18,然后调用了它的sayHello方法输出了自己的名字。
3. 继承
要继承一个类,可以使用extends关键字,并指定父类的名称。
```javascript
class Student extends Person {
constructor(name, age, grade) {
super(name, age);
this.grade = grade;
}
study() {
console.log(`I'm studying in grade ${this.grade}.`);
}
}
```
上面的代码定义了一个名为Student的类,它继承自Person类。Student类有一个构造函数和一个方法study。构造函数接受三个参数name、age和grade,其中前两个用于初始化父类的属性,后一个用于初始化自己的属性。study方法用于输出学生的年级。
4. 调用父类方法
在子类中,可以使用super关键字调用父类的方法或属性。
```javascript
class Student extends Person {
constructor(name, age, grade) {
super(name, age);
this.grade = grade;
}
sayHello() {
super.sayHello();
console.log(`I'm a student in grade ${this.grade}.`);
}
}
```
上面的代码重新定义了Student类的sayHello方法,并在其中调用了父类的sayHello方法。这样,每次调用子类的sayHello方法时,都会先输出父类的信息,然后再输出子类的信息。
5. 静态方法
类中可以定义静态方法,通过类名调用,而不是通过对象调用。
```javascript
class Calculator {
static add(a, b) {
return a + b;
}
static subtract(a, b) {
return a - b;
}
}
```
上面的代码定义了一个名为Calculator的类,它有两个静态方法add和subtract,用于执行加法和减法运算。这些方法可以直接通过类名调用,而不需要先创建对象。
```javascript
console.log(Calculator.add(1, 2)); // 3
console.log(Calculator.subtract(3, 2)); // 1
```
上面的代码分别调用了Calculator类的add和subtract方法,输出了它们的计算结果。
es6class类语法
ES6(ECMAScript 2015)引入了Class关键字,这是一种简洁的方式来定义JavaScript的类。使用类可以使代码组织更加清晰,更容易理解和维护。以下是ES6 Class的基本语法:
1. **定义类**:
```javascript
class ClassName {
// 成员变量 (实例变量)
instanceVariable = value;
// 构造函数 (构造方法)
constructor(parameters) {
// 实例初始化代码
}
// 成员方法 (成员函数)
method() {
// 方法体
}
// 静态方法 (不绑定到特定实例)
static staticMethod() {
// 静态代码
}
}
```
2. **继承**:
使用`extends`关键字来继承父类,子类可以访问父类的所有成员。
```javascript
class ChildClass extends ParentClass {
// 子类特有的成员或方法
}
```
3. **构造函数的调用**:
通常在创建新实例时会自动调用构造函数,但也可以显式调用。
```javascript
const instance = new ClassName(parameters);
```
4. **原型链**:
ES6 Class默认继承自`Object`,所有的实例共享一个原型。`this`在方法中指向当前实例。
5. **方法和属性的动态绑定**:
类中的方法默认是实例方法,可以通过`static`关键字声明静态方法,`bind`方法可以用于创建具有特定`this`值的新函数。
阅读全文