ES6代理:JavaScript中的元編程
密鑰概念:
通過攔截對象屬性訪問,ES6代理啟用元編程。 代理充當您的代碼和目標對象之間的中介。 這涉及三個關鍵要素:
> 如果存在屬性,則此代理將返回原始值;否則,它將返回42.
> 高級示例:受控屬性設置<code class="language-javascript">const target = { a: 1, b: 2, c: 3 }; const handler = { get: (target, prop) => (prop in target ? target[prop] : 42), // Default to 42 if property doesn't exist }; const proxy = new Proxy(target, handler); console.log(proxy.a); // 1 console.log(proxy.b); // 2 console.log(proxy.d); // 42</code>
我們可以增強代理以限制財產分配:
此示例僅允許設置單字符屬性(A-Z)。
可用的代理陷阱:超越
<code class="language-javascript">const handler = { get: (target, prop) => (prop in target ? target[prop] : 42), set: (target, prop, value) => { if (prop.length === 1 && prop >= 'a' && prop <= 'z') { target[prop] = value; return true; } else { throw new Error(`Invalid property: ${prop}`); } }, }; const proxy = new Proxy({}, handler); // Start with an empty object proxy.a = 10; // Allowed proxy.b = 20; // Allowed try { proxy.AB = 30; // Throws an error } catch (e) { console.error(e); }</code>>和
,許多陷阱提供了細粒的控制:
:攔截
運算符調用。>
get
set
:攔截函數調用。
construct
new
apply
>
deleteProperty
has
in
ownKeys
數據綁定:同步對象與UI更新更改。
以上是ES6行動:如何使用代理的詳細內容。更多資訊請關注PHP中文網其他相關文章!