Proxy 是 JavaScript 的一個內置對象,允許創建一個代理對象,用於攔截和自定義目標對象的各種操作,例如屬性讀取、屬性賦值、函式調用等。使用 Proxy 的基本語法是:let proxy = new Proxy(target, handler),其中,target 是要代理的目標對象,handler 是一個包含各種攔截操作的處理器對象。
在 handler 對象中,可以定義以下幾種攔截操作:
get:攔截屬性讀取操作。例如,const handler = { get: function(target, property) { console.log(`正在讀取屬性:${property}`); return target[property]; } }。
set:攔截屬性賦值操作。例如,const handler = { set: function(target, property, value) { console.log(`正在設定屬性:${property},新值為:${value}`); } }。
apply:攔截函式調用操作。
construct:攔截構造函式的調用。
has:判斷對象是否擁有某個屬性。
getOwnPropertyDescriptors:獲取對象所有自身屬性的描述符。
ownKeys:獲取對象所有自身的屬性鍵。
deleteProperty:攔截刪除屬性的操作。
defineProperty:攔截定義屬性的操作。
isExtensible:判斷對象是否可擴展。
preventExtensions:阻止對象擴展。
getPrototypeOf:獲取對象的原型。
setPrototypeOf:設定對象的原型。
這些攔截操作允許開發者對目標對象的操作進行細粒度的控制,實現諸如對象模擬、運算符重載、創建簡潔靈活的API等功能。