一、Reflect的作用
1、和Proxy能力一一对应
2、规范化,标准化,函数式
3、替换掉Object上的工具函数
/* Reflect的作用 */
/* 1、Proxy和Reflect是一一对应的 2、Reflect规范化,函数化,标准化 3、替代掉Object上的工具函数 */
const data = ['a', 'b', 'c']
/* 代理和反射 */
const proxyData = new Proxy(data, {
get(target, key, receiver) {
/* ownKeys可以获取不是原型的属性 */
/* 只处理本身(非原型的)属性 */
const ownKeys = Reflect.ownKeys(target);
if (ownKeys.includes(key)) {
console.log('get', key)
}
const result = Reflect.get(target, key, receiver)
return result //返回结果
},
set(target, key, val, receiver) {
/* 重复的数据,不处理 */
if (val === target[key]) {
return true;
}
const result = Reflect.set(target, key, val, receiver)
console.log('set', key, val)
return result //是否设置成功
},
deleteProperty(target, key) {
const result = Reflect.deleteProperty(target, key)
console.log('delete property', key);
return result //是否删除成功
}
})