什么是Proxy?
Proxy是ES6引入的一个新特性,它可以用于拦截JavaScript对象的各种操作,例如访问属性、赋值、删除、函数调用等等。使用Proxy可以在不修改原始对象的情况下,对其进行行为的定制。
Proxy可以看作是在目标对象前架设了一层“拦截”层,外界对该对象的访问都要经过这层拦截,因此可以对访问进行过滤和改写。
创建Proxy对象
要创建一个Proxy对象,需要使用new Proxy(target, handler)
语法。其中,target
参数是要拦截的对象,handler
参数是一个对象,它定义了拦截器函数,用来拦截对target
对象的各种操作。
下面是一个简单的示例,展示了如何使用Proxy来拦截对一个对象的访问:
const target = { name: 'John' };
const handler = {
get: function(target, prop) {
console.log(`Accessing ${prop}`);
return target[prop];
}
};
const proxy = new Proxy(target, handler);
console.log(proxy.name); // Accessing name, John
在这个的例子中,创建了一个包含一个name
属性的对象target
,然后创建了一个handler
对象,其中定义了一个get
方法,用来拦截对target
对象属性的访问。最后,我们使用new Proxy
来创建了一个代理对象proxy
,并将target
对象和handler
对象作为参数传入。
当我们通过代理对象proxy
访问name
属性时,handler
对象中的get
方法会被触发,控制台会输出Accessing name
,然后返回target[name]
的值,即John
。