1.Reflect
一个静态对象,类似于Math,提供了一系列操作对象的方法,实际上是Proxy内部方法的默认实现,以前操作对象的方法不统一,使用时可能一会用Object的方法,一会用操作符,而Reflect提供了统一的操作方式。
Reflect
对象一共有 13 个静态方法。
- Reflect.apply(target, thisArg, args)
- Reflect.construct(target, args)
- Reflect.get(target, name, receiver)
- Reflect.set(target, name, value, receiver)
- Reflect.defineProperty(target, name, desc)
- Reflect.deleteProperty(target, name)
- Reflect.has(target, name)
- Reflect.ownKeys(target)
- Reflect.isExtensible(target)
- Reflect.preventExtensions(target)
- Reflect.getOwnPropertyDescriptor(target, name)
- Reflect.getPrototypeOf(target)
- Reflect.setPrototypeOf(target, prototype)
具体方法说明:
https://es6.ruanyifeng.com/#docs/reflect
2.class static
类相当于实例的原型,所有在类中定义的方法,都会被实例继承。如果在一个方法前,加上static
关键字,就表示该方法不会被实例继承,而是直接通过类来调用,这就称为“静态方法”。
3.Set\Map数据结构
都是新定义的数据结构类型,Set的特点里面是无重复的值,提供了一系列方法操作Set结构,如add,has,value等,常用于数组、伪数组去重。
Map是提供了一种真正意义上的键值对类型,以前js中的对象键名只能是字符串类型,如果我们用复杂的数据类型作为键名会引起一系列的问题,因为对其操作的时候键名都会转换为字符串,而Map允许创建任意类型的键名,真正意义上提供了键与值的映射关系。
具体使用方法见:https://es6.ruanyifeng.com/#docs/set-map
4.Symbol
新增的数据类型,作用是为对象提供独一无二的属性名,例如
const name = Symbol()
const person = {
[name]:'cloudgapes',
say(){
console.log('hello'+this[name]);
}
}
person.say()
console.log(typeof name);
//打印结果
hellocloudgapes
symbol
一般用于避免对象属性的重复、定义对象私有成员。