ES6新特性---Reflect、类、静态方法、Set、Map

Reflect

Reflect是ES2015中一个全新的内置对象,按照Java的说法, Reflect就是一个静态类,不能通过new的方式去构建一个实例对象,只能去调用这个静态类中的静态方法,这点与JavaScript中的Math是相同的。
Reflect内部封装了一系列对对象的底层操作,一共有14个静态方法,其中又一个被废弃了。
但是Reflect成员方法就是Proxy处理对象的默认实现。
ES6新特性---Reflect、类、静态方法、Set、Map
假如你没有写get和set方法的情况下,系统会默认加上图中所示的get方法。
这个方法的意义在于统一提供了一套用于操作对象的API。
ES6新特性---Reflect、类、静态方法、Set、Map

在此之前,ES都是通过定义函数,以及函数的原型对象来实现的类型。
ES6新特性---Reflect、类、静态方法、Set、Map

静态方法

静态方法与实例方法不同,可以直接通过类型直接调用,而实例方法需要通过实例化对象来进行调用。
ES6新特性---Reflect、类、静态方法、Set、Map
不过这里需要注意的是,因为静态方法是挂载到类型上的,所以说在静态方法内部this就不会指向某一个实力对象,而是指向当前的类型。

类的继承

太简单了顾名思义,学过Java的都懂,简单写个例子自个看吧。
ES6新特性---Reflect、类、静态方法、Set、Map
结果如下,先走父类的构造函数。
ES6新特性---Reflect、类、静态方法、Set、Map

Set

ES2015提供了一些全新的数据结构Set就是其中之一,简单来说,是一个不重复的集合。
通过add(),添加数据,可以链式调用。当添加的值是重复的时,会忽略掉。
ES6新特性---Reflect、类、静态方法、Set、Map

Map

下面分析这样的一个问题。
ES6新特性---Reflect、类、静态方法、Set、Map
给对象添加的键假如不是字符串的话,系统会将该键ToString方法后的值作为键。这就导致了问题。
Map的出现正是为了解决这个问题。
ES6新特性---Reflect、类、静态方法、Set、Map