Proxy 用于修改方法或对象的默认行为,简单理解为它是函数或对象的生命周期。
例如:在处理目标方法或对象前后做一些数据的初始化。
Proxy 对象的定义
new Proxy({ }, { });
第一个花括号:处理对象或方法主体。
第二个花括号:Proxy 代理处理区域。
代码实例:
var pro = new Proxy({
add: function (val) {
return val + 100;
},
name: 'Proxy 预处理代理'
}, {
get: function (target, key, property) {
console.log("get 方法是在得到某个对象属性值时预处理的方法。");
console.log(target);
console.log(key);
console.log(property);
return target[key];
},
set: function (target, key, value, receiver) {
console.log("set 方法是要改变Proxy属性值时进行的预处理。");
console.log(target);
console.log(key);
console.log(value);
console.log(receiver);
return target[key] = value;
}
});
console.log(pro.name);
pro.name = '我喜欢学习ES6';
console.log(pro.name);
set(target, key, property) 方法
- target:得到目标值
- key:目标的key值,相当于对象的属性
- property:
get(target, key, value, receiver) 方法
- target:目标值
- key:目标的key值
- value:要改变的值
- receiver:改变前的原始值
apply 使用
apply 的作用是调用内部的方法,
let target = function () {
return '我喜欢学习Proxy预处理代理';
}
let handler = {
apply(target, ctx, args) {
console.log('do apply');
return Reflect.apply(...arguments);
}
}
var pro = new Proxy(target, handler);
console.log(pro());
Proxy 的知识点非常多,建议看阮一峰大神的ES6。