js中的class

在js中,类(class)是ECMAScript 6新引入的一个语法糖,仍然基于js中已经存在的基于原型的继承模型,因此,这个语法并没有为js引入新的继承模型。事实上,class仍然是特殊的函数。

类定义:

定义类的方式和定义函数的方式一样,也有两种,分别是类声明以及类表达式

1 类声明:

1
2
3
4
5
6
class Polygon {
constructor(height, width) {
this.height = height;
this.width = width;
}
}

类声明与函数声明的一个显著区别是,在函数声明中,存在着变量提升的特性,而在类声明中,则没有这个特性,因此,使用类声明的时候,一定要遵循先声明,后使用的原则。如下的代码就会报错

1
2
var p = new Polygon(); // ReferenceError
class Polygon {}

而下面这种代码则不会报错

1
2
3
var p = new Polygon();
function Polygo(){
}

2 类表达式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 匿名类 
var Polygon = class {
constructor(height, width) {
this.height = height;
this.width = width;
}
};
// 命名类
var Polygon = class Polygon {
constructor(height, width) {
this.height = height;
this.width = width;
}
};