以下是一个简单的例子,演示了如何使用Proxy来拦截对象的读取和写入:
// 创建一个简单的目标对象
const targetObject = {
name: 'John',
age: 30
};
// 创建一个 Proxy 对象
const proxy = new Proxy(targetObject, {
// 拦截对象属性的读取操作
get: function(target, property) {
console.log(`Reading property "${property}"`);
return target[property];
},
// 拦截对象属性的写入操作
set: function(target, property, value) {
console.log(`Writing property "${property}" with value "${value}"`);
target[property] = value;
}
});
// 使用 Proxy 对象
console.log(proxy.name); // 读取属性,触发 get 拦截
proxy.age = 31; // 写入属性,触发 set 拦截
在上述例子中,Proxy对象被用于包装targetObject,并定义了get和set拦截器。当我们读取或写入proxy对象的属性时,相应的拦截器会被触发,允许我们自定义处理逻辑。
这只是Proxy的基础用法,它还支持许多其他拦截器,如apply(拦截函数调用)、has(拦截in操作符)、deleteProperty(拦截delete操作符)等。使用Proxy可以实现更复杂的元编程行为。
转载请注明出处:http://www.zyzy.cn/article/detail/4674/ES6