ES6中的class
2019-06-06 本文已影响0人
Grayly吖
(在封装Koa时用到)
一、class概述
- class作为对象的模板被引入,可以通过class关键字定义类,通过new关键字实例化,它的本质是function
二、基本语法
1、匿名类
let Person = class {
constructor(a) {
this.a = a;
}
}
2、命名类
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
speak() {
//console.log(this);
console.log('我的名字叫', this.name)
}
}
3、注意事项
-
(1)类定义不会提升,必须在访问前对类进行定义,否则会报错
-
(2)类里面的方法不需要function关键字,且方法间不能用逗号隔开
三、class继承
1、通过extends实现类的继承
class Child extends Person { ...}
2、子类constructor方法中必须有super,且必须在this前用super
class Child extends Person {
constructor(name, age) {
super(name, age);
this.type= "child";
}
}
四、class的实例化必须通过new关键字
- 子类继承父类后可以调用父类中的方法
let child = new Child("小明", 12);
console.log(child);
child.speak();
每日额外
(1)当类中的方法this指向反生改变时,可以在构造器中给该方法绑定this
this.add = this.add.bind(this);
class Electric extends Common {
constructor() {
super('Electric');
this.add = this.add.bind(this);
}
// 增
async add(ctx) {
this.speak();
}