JavaScript 中的代理程式是一個特殊的對象,它允許您自訂基本操作的行為(例如,屬性查找、賦值、枚舉、函數呼叫等)另一個物體。這就像有一個淘氣的中間人可以攔截並改變與物件的互動。
代理有多種用途:
驗證:透過驗證分配確保資料完整性。
日誌記錄:追蹤物件上的操作以進行調試或監控。
預設值:在存取屬性時提供預設值。
存取控制:限製或修改對某些屬性的存取。
虛擬屬性:定義物件上實際不存在的屬性。
想像一下您有一個名叫蒂米的孩子,您想確保他不會吃太多餅乾。你就像一個過度保護的父母,監視和控制他的餅乾攝取量。
let timmy = { cookies: 3 }; let overprotectiveParent = new Proxy(timmy, { get(target, property) { console.log(`Overprotective Parent: "Timmy currently has ${target[property]} ${property}."`); return target[property]; }, set(target, property, value) { if (property === 'cookies' && value > 5) { console.log('Overprotective Parent: "No, Timmy, you can’t have more than 5 cookies!"'); return false; } console.log(`Overprotective Parent: "Alright, Timmy, you can have ${value} ${property}."`); target[property] = value; return true; } }); // Checking Timmy's cookies console.log(overprotectiveParent.cookies); // Overprotective Parent: "Timmy currently has 3 cookies." // Trying to give Timmy too many cookies overprotectiveParent.cookies = 6; // Overprotective Parent: "No, Timmy, you can’t have more than 5 cookies!" // Setting a reasonable number of cookies overprotectiveParent.cookies = 4; // Overprotective Parent: "Alright, Timmy, you can have 4 cookies." console.log(overprotectiveParent.cookies); // Overprotective Parent: "Timmy currently has 4 cookies."
以上是JavaScript 中的代理的詳細內容。更多資訊請關注PHP中文網其他相關文章!