ES6 Reflect 與 Proxy 之 apply方法

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 可以理解成,在目標對象之前假設一層"攔截", 外界對該對象的訪問,都必須通過這層攔截,因此提供一種機制,可以對外界的訪問進行過濾和改寫.

 

 

參考:

https://www.runoob.com/w3cnote/es6-reflect-proxy.html

https://segmentfault.com/q/1010000012825297/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章