一、Reflect的作用

  1. 1、和Proxy能力一一对应
  2. 2、规范化,标准化,函数式
  3. 3、替换掉Object上的工具函数
  1. /* Reflect的作用 */
  2. /* 1、Proxy和Reflect是一一对应的 2、Reflect规范化,函数化,标准化 3、替代掉Object上的工具函数 */
  3. const data = ['a', 'b', 'c']
  4. /* 代理和反射 */
  5. const proxyData = new Proxy(data, {
  6. get(target, key, receiver) {
  7. /* ownKeys可以获取不是原型的属性 */
  8. /* 只处理本身(非原型的)属性 */
  9. const ownKeys = Reflect.ownKeys(target);
  10. if (ownKeys.includes(key)) {
  11. console.log('get', key)
  12. }
  13. const result = Reflect.get(target, key, receiver)
  14. return result //返回结果
  15. },
  16. set(target, key, val, receiver) {
  17. /* 重复的数据,不处理 */
  18. if (val === target[key]) {
  19. return true;
  20. }
  21. const result = Reflect.set(target, key, val, receiver)
  22. console.log('set', key, val)
  23. return result //是否设置成功
  24. },
  25. deleteProperty(target, key) {
  26. const result = Reflect.deleteProperty(target, key)
  27. console.log('delete property', key);
  28. return result //是否删除成功
  29. }
  30. })