Reflect的作用,target,property,value,receiver代表啥

1.真的proxy

复制代码
let target ={name:'张三'}
let handler = {
  get(target,property,receiver){
    console.log(1,target,2,property,3,receiver)
    return Reflect.get(target,property,receiver)
  },
  set(target,property,value,receiver){
    console.log('a',target,'b',property,'c',value,'d',receiver)
    return Reflect.set(target,property,value,receiver)
  }
}
let proxy = new Proxy(target,handler)
console.log(proxy.name)
proxy.name = '李四'
// console.log(proxy.name)

以上代码用浏览器控制台运行下如下

可知target,property,value,receiver的值

不知道为啥这里的target换成多层的对象就不起作用了

复制代码
let target ={name:'张三',info:{age:18,sex:'男'}}
console.log(proxy.info.sex)
proxy.info.sex = '女'

2.自己写的proxy

很明显这里的reflect.get被return target[key]替代,

reflect.set被 '=' 替代

说明了reflect在proxy的作用

复制代码
let handler = {
  get(target, key, receiver) {
    console.log(1, target, 2, key, 3, receiver)
    return target[key];
  },
  set(target, key, value, receiver) {
    console.log('a', target, 'b', key, 'c', value, 'd', receiver)
    target[key] = value;
    return true;
  },
};
let target ={name:'张三'}
let proxy = new Proxy(target, handler);
console.log(proxy.name)
proxy.name = '李四'
console.log(proxy.name)
相关推荐
神仙别闹2 分钟前
基于Java+MySQL 实现(Web)日程管理系统
java·前端·mysql
布列瑟农的星空4 分钟前
webworker 实践:外部依赖引入和打包问题
前端·低代码
傻小胖6 分钟前
发布一个npm包,更新包,删除包
前端·npm·node.js
runnerdancer10 分钟前
解构shopify,从0到1实现落地页低代码编辑器
前端
苹果酱056727 分钟前
2020-06-23 暑期学习日更计划(机器学习入门之路(资源汇总)+概率论)
java·vue.js·spring boot·mysql·课程设计
Deepsleep.29 分钟前
react和vue的区别之一
javascript·vue.js·react.js
WEI_Gaot29 分钟前
react19 的项目创建和组件使用
前端·react.js
资深前端外卖员33 分钟前
【nodejs高可用】前端APM应用监控方案 + 落地
前端·后端
OhBonsai33 分钟前
Shader 图像处理1_ToneMap技术处理过曝
前端
突头小恐龙33 分钟前
Chrome devTools - Lighthouse
前端·javascript·chrome