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}`