网站的视频做gif,企业vi是什么,wordpress 设置导航菜单,二维码网站建设定义#xff1a; Proxy 可以理解成#xff0c;在目标对象之前架设一层“拦截”#xff0c;外界对该对象的访问#xff0c;都必须先通过这层拦截#xff0c;因此提供了一种机制#xff0c;可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理#xff0c;用在这里表…定义 Proxy 可以理解成在目标对象之前架设一层“拦截”外界对该对象的访问都必须先通过这层拦截因此提供了一种机制可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理用在这里表示由它来“代理”某些操作可以译为“代理器”。 语法
Proxy对象由一个目标对象target和一个捕捉器对象handler组成。目标对象是被代理的对象而捕捉器对象定义了在代理对象上执行操作时的行为。
let proxy new Proxy(target, handler); Proxy 对象的所有用法都是上面这种形式不同的只是handler参数的写法。new Proxy()表示生成一个Proxy实例target参数表示所要拦截的目标对象handler参数也是一个对象用来定制拦截行为。
使用方法
属性访问拦截
const target {name: Alice,age: 25
};const handler {get: function(target, prop) {console.log(访问属性: ${prop});return target[prop];}
};const proxy new Proxy(target, handler);
console.log(proxy.name); // 输出: 访问属性: name然后输出 Alice属性赋值拦截
const target {name: Alice,age: 25
};const handler {set: function(target, prop, value) {console.log(设置属性: ${prop} 值为 ${value});target[prop] value;}
};const proxy new Proxy(target, handler);
proxy.age 30; // 输出: 设置属性: age 值为 30
console.log(proxy.age); // 输出: 30函数调用拦截
const target function(message) {console.log(原始函数被调用传入参数: ${message});
};const handler {apply: function(target, thisArg, args) {console.log(函数调用拦截参数: ${args});target.apply(thisArg, args);}
};const proxy new Proxy(target, handler);
proxy(Hello!); // 输出: 函数调用拦截参数: Hello!然后输出 原始函数被调用传入参数: Hello!常见实例方法
get() get方法用于拦截某个属性的读取操作可以接受三个参数依次为目标对象、属性名和 proxy 实例本身严格地说是操作行为所针对的对象其中最后一个参数可选。 set() set方法用来拦截某个属性的赋值操作可以接受四个参数依次为目标对象、属性名、属性值和 Proxy 实例本身其中最后一个参数可选。 apply() apply方法拦截函数的调用、call和apply操作。 apply方法可以接受三个参数分别是目标对象、目标对象的上下文对象this和目标对象的参数数组。