apply(target, ctx, args): 用於攔截函數的調用\ call 和 reply 操作. target 表示目標對象, ctx 表示目標對象上下文, args 表示目標對象的參數數組.
測試代碼:
function sub(a, b) {
return a-b;
}
let handler = {
apply: function(target, ctx, args){
console.log('handle apply');
console.log(...arguments);
var result = Reflect.apply(...arguments);
console.log(result);
return result;
}
}
let proxy = new Proxy(sub, handler)
proxy(2,1)
執行結果:
handle apply
[Function: sub] undefined [ 2, 1 ]
1
Proxy 用於修改某些操作的默認行爲, 等同於在語言層面做出修改,所以屬於一種"元編程",即對編程語言進行編程.
Proxy 可以理解成,在目標對象之前假設一層"攔截", 外界對該對象的訪問,都必須通過這層攔截,因此提供一種機制,可以對外界的訪問進行過濾和改寫.
參考: