ES6发布于2015年6月份,新增了类,模块,箭头函数等,而且新增了13个内置对象:Symble,Map,Set,WeakMap,WeakSet,ArrayBuffer,TypedArray,DataView,GeneratorFunction,Generator,Promise,Reflect,Proxy。
ES2015中最大的改变应该就是启用class关键字,即类的概念。ES本身是基于对象的语言,虽然启用了类的概念,但是依然不是基于类的语言而是基于对象的语言。
#### class的用法
ES6中使用class的操作除了定义正常的属性、方法外,最重要的就是extends、super以及constructor关键字的使用。
代码示例:
```
// 定义一个人的类
class Person {
constructor(sex){
this.sex = sex;
}
printSex(){
console.log(`sex is ${this.sex}`);
}
}
// 定义一个学生类
class Student extends Person {
constructor(sex, age){
super(sex);
this.age = age;
}
printStudentInfo() {
console.log(`student sex is ${this.sex}, age is ${this.age}`);
}
}
// 实例化
var stu = new Student(18, 'male');
stu.printSex(); // sex is 18
stu.printStudentInfo(); // student sex is 18, age is male
```
![测试结果](https://upload-images.jianshu.io/upload_images/2789632-354fad5f89527e51.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
ES中的构造函数是利用constructor来定义的,而不像C#和java,使用与类名同名的函数来定义。