### class:类
1. ES6类相当于ES5的语法糖
2. 使用class关键字声明类:class Fn() {} || const Fn = class {}
3. 类中的所有方法之间不需要加入逗号,在函数前也不需要加入function关键字
4. function fn(x, y) { this.x = x } === class fn { constructor(x, y){ this.x = x } }
Point.prototype = {
_initProperty = 1; 实例属性的另一种写法
static _initProperty = 1; 类的静态属性(目前还只是提案,无法使用,可在类的外面定义:Point._initProperty = 1)
constructor() {
this._initProperty = 1; 实例属性
}
toString() {}
toValue() {}
get y() {}
set y() {}
static classMethod() {} 类的静态方法
};
5. 向类中一次添加多个方法
Object.assign(Point.prototype, {
toString(){},
toValue(){}
});
6. constructor方法是类中默认的方法,在new生成对象时自动调用,默认返回实例对象( this ),当然也可以更改指向
7. 类只能通过new进行创建
8. 类的实例属性定义在自身上,也就是this上,否则就是原型对象上
9. 类中也拥有get set函数,可以拦截自定义属性的设置返回行为
10. 类的立即执行
let person = new class { constructor(name) { this.name = name } }( 'Jack' )
11. 类和模块内部默认就是严格模式,不需要 'use strict' 声明
12. 类不存在变量提升,与ES5函数不同
13. static关键字定义类的静态方法,不被实例所继承,类中的this指向类,不指向实例对象
14. 父类的静态方法,也可被子类继承
15. new.targer为新增的属性,指向类本身,如果是子类继承,则指向子类