Class 基本语法
1.简介
JavaScript 语言中,生成实例对象的传统方法是通过构造函数。
ES6 的class可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。
2.严格模式
类和模块的内部,默认就是严格模式,所以不需要使用use strict指定运行模式。只要你的代码写在类或模块之中,就只有严格模式可用。
3.constructor 方法
constructor方法是类的默认方法,通过new命令生成对象实例时,自动调用该方法。
一个类必须有constructor方法,如果没有显式定义,一个空的constructor方法会被默认添加。
4.类的实例对象
生成类的实例对象的写法,与 ES5 完全一样,也是使用new命令。
5.Class 表达式
与函数一样,类也可以使用表达式的形式定义。
6.不存在变量提升
类不存在变量提升(hoist),这一点与 ES5 完全不同。
7.私有方法
私有方法是常见需求,但 ES6 不提供,只能通过变通方法模拟实现。
8.私有属性
与私有方法一样,ES6 不支持私有属性。目前,有一个提案,为class加了私有属性。方法是在属性名之前,使用#表示。
9.this 的指向
类的方法内部如果含有this,它默认指向类的实例。
10.name 属
由于本质上,ES6 的类只是 ES5 的构造函数的一层包装,所以函数的许多特性都被Class继承,包括name属性。
11.Class 的取值函数(getter)和存值函数(setter)
与 ES5 一样,在“类”的内部可以使用get和set关键字,对某个属性设置存值函数和取值函数,拦截该属性的存取行为。
12.Class 的 Generator 方法
如果某个方法之前加上星号(*),就表示该方法是一个 Generator 函数。
13.Class 的静态方法
类相当于实例的原型,所有在类中定义的方法,都会被实例继承。如果在一个方法前,加上static关键字,就表示该方法不会被实例继承,而是直接通过类来调用,这就称为“静态方法”。
14.Class 的静态属性和实例属性
静态属性指的是 Class 本身的属性,即Class.propName,而不是定义在实例对象(this)上的属性。
1)类的实例属性
类的实例属性可以用等式,写入类的定义之中。
2)类的静态属性
类的静态属性只要在上面的实例属性写法前面,加上static关键字就可以了。
15.new.target属性
ES6 为new命令引入了一个new.target属性,该属性一般用在在构造函数之中,返回new命令作用于的那个构造函数。