ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
Proxy 文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy Reflect 文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Reflect **** * 先通过 Proxy 代理对象拦截目标对象的任意属性的任意(13种)操作,包括属性值的读写、属性的添加,、属性的删除等。 * 然后通过 Reflect 反射对象,动态地对被代理对象的相应属性进行特定的操作。 ```html <script type="text/javascript"> //1. 目标对象(被代理对象) const user = { name: '张三', wife: { name: '小樱' } } //2. 代理对象 const proxyUser = new Proxy(user, { //获取目标对象的属性值 get(target, prop) { return Reflect.get(target, prop) }, //修改或新增目标对象的属性 set(target, prop, val) { return Reflect.set(target, prop, val) }, //删除目标对象属性 deleteProperty(target, prop) { return Reflect.deleteProperty(target, prop) } }) //3. 通过代理对象获取属性 console.log(proxyUser.name) //张三 //4. 通过代理对象更改属性 proxyUser.name = '王五' console.log(user) //{name: '王五', wife: {…}} //5. 通过代理对象添加新属性 proxyUser.gender = '男' console.log(user) //{name: '王五', wife: {…}, gender: '男'} //6. 通过代理对象删除属性 delete proxyUser.gender console.log(user) //{name: '王五', wife: {…}} </script> ```