ES6的Proxy是一种特殊类型的对象,它可以在对目标对象进行操作时添加自定义行为。Proxy可以拦截并定义目标对象的内部操作(如属性查找、赋值、枚举、函数调用等),从而实现对目标对象的控制和扩展。
用途:
- 数据绑定:可以在数据变化时自动更新视图。
- 访问控制:可以对目标对象的属性进行访问控制,例如只读、私有等。
- 函数调用:可以拦截并修改函数调用的行为,例如参数验证、日志记录等。
- 异步操作:可以拦截并处理异步操作,例如延迟、缓存等。
示例:
let target = {
name: 'Tom', age: 18 };
let handler = {
get: function(obj, prop) {
if (prop === 'age') {
return obj[prop] + 1;
}
return obj[prop];
}
};
let proxy = new Proxy(target, handler);
console.log(proxy.name); // 输出 "Tom"
console.log(proxy.age); // 输出 19