目录:
- 简介
- 定义
- 类构造函数
- 继承
ES6的类是什么?
类是面向对象的内容,而ES6中的类是构造函数和原型的语法糖。
因此,类其实就是构造函数。
类的定义需要使用class
关键字。
定义类:
- 类声明:
class Animal{}
- 类表达式:
const animal = class {}
但类表达式没有提升。
类构造函数:
在ES6类中,有专门的构造函数constructor
,在使用new
初始化类时会自动调用这个函数。当没有构造函数时,相当于为空。
class Animal {
constructor() {
console.log("class Animal");
}
}
let animal = new Animal();//class Animal
类构造函数和构造函数区别:
调用类构造函数必须使用new
否则报错,而构造函数不使用new
则会当作普通函数执行
class Animal {
constructor() {
this.name = name
}
}
let animal = Animal("Tim");
console.log(animal)//Class constructor Animal cannot be invoked without 'new'
function Animal(name) {
this.name = name;
}
let animal = Animal("Tim");
console.log(animal)//undefined
继承:
class Animal {
constructor(name) {
this.name = name;
}
say() {
console.log("bark...");
}
}
class Dog extends Animal {
constructor(name, age) {
super(name);
this.age = age;
}
}
let dog = new Dog("tim", 12);
dog.say();//bark...
使用extends
关键字继承,并且在子类的构造函数中需要使用super()
用它的原型。并且在super
之前引用this
会报错