Class Syntax in ES6
概述
在ES6中,可以通过Class来声明构造函数,可以认为Class是过去构造器写法的一种语法糖
|
|
声明语法
在Class中,依然存在prototype,依然是通过new
关键字来声明一个实例
|
|
ES6不一致行为
- 在类内部(如上面的
toString
)定义的方法,在ES6中默认为不可枚举的,而ES5中prototype上的方法是可枚举的
|
|
用Class声明的类必须使用
new
实例化,不能直接当作函数调用,否则报错为了保证子类声明在父类之后,Class不存在变量提升
立即执行Class
|
|
绑定实例方法上下文
实例方法执行时可能会丢失他指向的this(默认是该实例)123const logger = new Logger();const { printName } = logger;printName(); // TypeError: Cannot read property 'print' of undefined
解决方法有2:
this.printName = this.printName.bind(this)
- 使用箭头函数,箭头函数捕获上下文