ES2015

151 阅读1分钟
Reflect

静态类,封装了一系列对对象的底层操作

含有13个静态方法,与proxy 对象中的处理对象的方法成员是完全一致的。其实就是其默认实现。

比如 proxy的get, set的默认实现,就是调用了reflect中的方法

 const obj = {
     foo: '123',
     bar: '456'
 }
 const proxy = new Proxy(obj, {
     get(target, property){
         return Reflect.get(target, property)
     }
 })

当我们去自定义实现get,set这样的逻辑时更标准的做法是先去实现自己的建设逻辑, 最后再去返回Reflect中对应的方法的调用结果。

Reflect最大的意义就是统一一套用于操作对象的API

Reflect.has(obj, 'name')
Reflect.deleteProperty(obj, 'age')
Reflect.ownKeys(obj) //获取对象所有的属性名 (Object.keys)
模版字符串
const str = `hello this is a \'string\'` //使用\转义
  • 支持多行字符串
  • 支持差值表达式的方式在字符串中嵌入对应的数值(可嵌入变量或者任何标准的js语句)
const msg = `hey, ${1 + 2}`
带标签的模版字符串
const name = 'tom'
const gender = false
function myTagFunc (strings, name, gender) {
   // 接收的内容就是模版字符串中的内容分割后的结果
   // console.log(strings) ["hey, ", " is a ", ""]
   return strings[0] + name + strings[1] + gender + strings[2]
}
const result = myTagFunc`hey, ${name} is a ${gender}`