代理是什么?简单理解就是我们不直接对对象、函数或者数组进行操作,而是把它挂载到Proxy(代理)上,直接对代理的做一系列操作。我们去买房,房产中介就相当于我们的代理,我们不需要直接向卖家沟通。
对象代理:
const name = {title: "Joker"};
const proxy = new Proxy(name, {
get(obj, property) {
return obj[property];
},
set(obj, property, value) {
obj[property] = value;
return true;
}
});
console.log(proxy.title); //Joker
proxy.title = "newJoker";
console.log(proxy.title) //newJoker
函数代理:
function factorial(num) {
return num === 1 ? 1 : num * factorial(num - 1)
}
let proxy = new Proxy(factorial, {
apply(func, obj, args) {
console.log(func.apply(this, args)); //120
}
});
proxy(5)
数组使用代理:
let arr = [{name: "Joker", age: 19}, {name: "newJoker", age: 20}];
let proxy = new Proxy(arr, {
get(array, key) {
console.log(array);
console.log(array[key].name);
}
});
proxy[0];
proxy[1];