在ES6当中,我们不再使用ES5的类,像寄生组合式这种的,因为很麻烦,代码量大且不容易理解,在开发中我们更倾向于使用ES6新增的class类,尤其是当你编写TS代码时。
一、class类是什么?
简单的来说,其实ES6的class类就是一个语法糖,我们完全可以把它看成ES5类的另一种表达形式。但是当我们用这种形式去表达的时候,我们会发现这样更清晰且更具有面向对象的感觉。
而且对于学过Java,C++等面向对象语言的人来说也更好上手,因为很像。
class People {
...
}
二、class类的构造函数
在class类中有且仅有一个constructor函数作为构造函数,一般情况下类的属性要在这个函数里。
例如:这里创建一个People类,有属性name,age。
class People {
constuctor(name, age){
this.name = name;
this.age = age;
}
}
三、class类中的方法
在class类中所有方法都直接写在类里面。
例如:还是上边那个People类,我们给它加一个方法
class People {
constuctor(name, age){
this.name = name;
this.age = age;
}
talking(){
console.log("hahaha");
}
}
这里我们用new创建一个实例对象
const people = new People('zs', 18);
people.talking(); //hahaha
运行之后我们就会看到控制台输出hahaha
四、static静态方法
静态方法不可用实例对象调用,只能用类名调用
例如:上边的People类,加一个静态方法
class People {
constuctor(name, age){
this.name = name;
this.age = age;
}
talking(){
console.log("hahaha");
}
static sayHello(){
console.log('hello');
}
}
const people = new People('zs', 18);
people.sayHello();//报错
People.sayHello(); //hello
五、class类继承
class类继承使用关键字extends。
class student extends People {
constructor(name, age, major){
super(name, age);
this.major = major;
}
}
这里的super作用是继承People类的属性,而方法自动继承下来了。