这是我参与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
这里我们需要注意两点:
- constructor 构造方法,其内this指向自身,类里面必须有这个方法,如果没有默认会自动加上。
- 因为类声明不会提升,所以我们需要先声明类,然后再访问它,否则将抛出
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+碎片化学习,每天都在向前走一步,这是所有文章的目录入口。