ES6 class类——语法糖
定义: class (类)作为对象的模板被引入,可以通过 class 关键字定义类。它的本质是函数(function),可以看作一个语法糖,让对象原型的写法更加清晰、更像面向对象编程的语法。
基本用法:
1.匿名类表达式
<script>
class {
constructor(name) {
this.name = name;
}
}
</script>
2.命名类表达式
<script>
class Start{
constructor(name) {
this.name = name;
}
}
</script>
class特殊点
1.不可重复声明。
<script>
class Start { }
class Start { }
// 或
let Start = class {}
class Start { }
</script>
以上两种都会报错:语法错误,“Start” 已声明。
2.类声明后不会被提升(有暂时性死区)。
<script>
console.log(new Start("Betty"));
class Start {
constructor(name){
this.name = name;
}
}
</script>
以上就会报错:引用错误,初始化前无法访问“Start”。
改正:
<script>
class Start {
constructor(name){
this.name = name;
}
}
console.log(new Start("Betty")); // 输出 :Start {name: "Betty"}
</script>
3.类中方法不需要 function 关键字。
4.必须使用new关键字。
class Start {
constructor(name){
this.name = name;
}
}
console.log(Start("Betty"));
以上会报错:类型错误,没有“new”不能调用类构造函数Start。
class下面的方法
1.constructor()方法。
constructor 方法是类的默认方法,创建类的实例化对象时被调用。
<script>
class Start {
constructor(){
console.log("constructor已执行!");
}
}
new Start(); // 输出:constructor已执行!
</script>
2.static静态方法。
static只能修饰class的方法,而不能修饰属性。静态方法不在实例化对象的方法中,里面不能有this。
class Start {
static sum(name) {
console.log(name);
}
}
Start.sum("Betty"); // 输出 : Betty
3.原型方法。
通过实例出来的对象可以,调用构造函数上面的方法。
<script>
class Start {
sum(name) {
console.log(name);
}
}
let test = new Start();
test.sum("Betty"); // 输出:Betty
</script>
class总结:
1.class是ES6提供的一个语法糖,本质是一个函数。
2.在class中声明方法,不需要function关键字。
3.class存在暂时型死区,在声明之前不能调用。
4.class默认有constructor、static方法。
5.class构造时必须使用new关键字。
OVERRRRRRRRR!
下一波我们总结用class来继承。