ES2015之类

155 阅读2分钟

这是我参与11月更文挑战的第3天,活动详情查看:2021最后一次更文挑战

ES2015的标准增加了:classes即类,这篇文章我们就来了解一下什么是类。

类是“特殊的函数”,就像你能够定义的函数表达式函数声明一样,类语法有两个组成部分:类表达式类声明

如何使用

类声明

要声明一个类,我们需要使用带有class关键字的类名,一般首字母大写,比如User

class User {
    constructor(name, age) {
        this.name = name;
        this.age = age
    }

    logger(){
        console.log(this.name,this.age);
    }
}

let user = new User('也笑', 812)
console.log(user.logger()); // 也笑 812

这里我们需要注意两点:

  1. constructor 构造方法,其内this指向自身,类里面必须有这个方法,如果没有默认会自动加上。
  2. 因为类声明不会提升,所以我们需要先声明类,然后再访问它,否则将抛出ReferenceError

类表达式

let User = class {
    constructor(name, age) {
        this.name = name;
        this.age = age
    }

    logger() {
        console.log(this.name, this.age);
    }
}

let user = new User('也笑', 812)
console.log(user.logger());

此种使用方式与类声明一致。

类的继承

class User {
    constructor(name) {
        this.name = name;
    }

    logger(){
        console.log(this.name);
    }
}

class Slifree extends User{
    constructor(name, age) {
        super(name)//调用User constructor
        this.age = age
    }

    logger() {
        super.logger()//调用User 函数
        console.log(`${this.name} age:${this.age}`);
    }
}

let slifree = new Slifree('也笑', 812)
console.log(slifree.logger());

输出如下:

也笑
也笑 age:812

在执行slifree.logger函数的时候,因为里面调用了从User继承来的logger函数,所以会有两段打印结果。

注意事项

类在继承的时候,可以使用super来调用父类的函数。

总结

我们要合理的使用类的继承,这样可以让我们的代码更优美。

如果你想了解ES的其他特性,请移步到 ES2015+碎片化学习,每天都在向前走一步,这是所有文章的目录入口。