天天看點

ES6:Proxy

Proxy用于重寫對象上的預設的方法

文法

target:需要代理的對象

handler:一個對象,包含想要重寫的操作

所有的方法可以在MDN中查詢:MDN處理器對象

簡單例子

先定義一個對象:

再定義一個Proxy執行個體來代理這個對象:

const personProxy = new Proxy(person, {
	get(target, key) {
		//将目标對象的屬性名轉為大寫
		return target[key].toUpperCase();
	}
});
           

這時候在控制台讀取personProxy的name屬性:

ES6:Proxy

Tom就變成大寫的了

其中 get() 方法的作用就是攔截對象的讀取屬性操作

target為目标對象,這裡 personProxy.name 的使用,target為personProxy

key為所擷取的屬性名,這裡 personProxy.name 的使用,key為personProxy的name屬性

具體的一些用法,解釋,可以檢視上面的MDN連結進行查閱

再舉一個🌰:

const person = { name: 'Tom', age: 20 };

const personProxy = new Proxy(person, {	
	set(target, key, value) {
		if(typeof value === 'string') {
			//去除指派屬性頭尾的空格
			target[key] = value.tirm();
		}
	}
});
           

handler.set()

在給代理對象的某個屬性指派時觸發該操作,比如在執行 proxy.foo = 1 時。

在控制台對personProxy的name屬性指派一個帶空格的名字,之後再通路personProxy的name屬性,發現空格沒有了:

ES6:Proxy

繼續閱讀