ES6-11学习笔记--Reflect
Reflect 映射
将Object属于语言内部的方法放到Reflect上
修改某些Object方法的返回结果,让其变得更合理
让Object操作编程函数行为
Reflect对象的方法与Proxy对象的方法一一对应
Object的一些方法抽离到Reflect,减小Object体量,增加代码可读性:
let obj = {}
let newVal = ''
Reflect.defineProperty(obj, 'name', {
get() {
console.log('get');
return newVal
},
set(val) {
console.log('set');
newVal = val
}
})
让原有方法增加返回值,让方法更加合理
Object.defineProperty() // 没有返回值 Reflect.defineProperty() // 返回布尔值
以前的命令式操作改为函数式操作:
console.log('assign' in Object); // true
console.log(Reflect.has(Object, 'assign')); // true
Reflect和Proxy一一对应:
let arr = [1, 2, 3]
arr = new Proxy(arr, {
get(target, prop) {
console.log(`target:${target} prop:${prop}`);
// return prop in target ? target[prop] : 'error'
return prop in target ? Reflect.get(target, prop) : 'error'
}
// 其他set等钩子也是一一对应
})
console.log(arr[1]);
放弃安逸,持续努力——成长

浙公网安备 33010602011771号