🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
#### 关于`Class`的几个注意点 * 类必须通过`new`来调用,否则会报错,这是与普通构造函数的一个主要区别,后者不需要`new`也可以执行 ~~~ class Foo{ constructor(){} } Foo() // TypeError: Class constructor Foo cannot be invoked without 'new' 复制代码 ~~~ * 类的内部,默认就是严格模式,所以不需要使用`use strict`指定运行模式(只要代码写在类之中,就只有严格模式可用) * 不存在提升 - 类不存在变量提升,这一点与Es5不同 ~~~ new Foo() // ReferenceError: Cannot access 'Foo' before initialization class Foo{} ❗ Ps - Es6不会把类的声明提升到代码头部 复制代码 ~~~ * `name`属性 - 本质上,`Es6`的类只是`Es5`的构造函数的一层包装,所以函数的许多特性都被class继承,包括`name` ~~~ class A{} A.name // A → name属性总是返回跟在`class`关键字后面的类名 复制代码 ~~~ * `this`指向 - 类的方法内部如果含有this,this指向类的实例,通过`this.xxx = ...`的方式赋值,都是在实例本身上操作 * 特殊:当类中的静态方法(`static`)含有`this`关键字,则`this`指向的是类,而不是实例