Il proxy in es6 implementa la modalità osservatore
2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Introduzione al proxy
Il proxy in ES6 è un oggetto speciale utilizzato per creare oggetti proxy. Ci consente di definire comportamenti personalizzati, come intercettare e modificare le azioni predefinite di un oggetto. Il proxy può essere utilizzato per intercettare varie operazioni sugli oggetti, inclusi l'accesso alle proprietà, l'assegnazione, le chiamate di funzioni, ecc.
La funzione del Proxy è quella di impostare uno strato di intercettazione prima dell'oggetto target, che può intercettare e personalizzare varie operazioni sull'oggetto target. Utilizzando Proxy, possiamo implementare funzioni come il controllo degli accessi, la verifica dei dati e il dirottamento degli attributi degli oggetti di destinazione.
Il proxy avvolge l'oggetto di destinazione con un oggetto proxy e fornisce una serie di funzioni hook (chiamate anche "trap") che possono operare sull'oggetto proxy. Quando operiamo sull'oggetto proxy, in realtà chiamiamo queste funzioni hook e le elaboriamo di conseguenza secondo necessità.
Introduzione alle operazioni sugli attributi proxy
- get(target, propKey, receiver): intercetta la lettura delle proprietà dell'oggetto
- set(target, propKey, value, receiver): intercetta l'impostazione delle proprietà dell'oggetto e restituisce un valore booleano.
- has(target, propKey): intercetta l'operazione di propKey nel proxy e restituisce un valore booleano.
- deleteProperty(target, propKey): intercetta l'operazione delete proxy[propKey] e restituisce un valore booleano.
- ownKeys(target): intercetta Object.getOwnPropertyNames(proxy), Object.getOwnPropertySymbols(proxy), Object.keys(proxy), for...in loop e restituisce un array. Questo metodo restituisce i nomi delle proprietà di tutte le proprietà dell'oggetto di destinazione, mentre il risultato restituito di Object.keys() include solo le proprietà attraversabili dell'oggetto di destinazione.
- getOwnPropertyDescriptor(target, propKey): intercetta Object.getOwnPropertyDescriptor(proxy, propKey) e restituisce l'oggetto descrizione della proprietà.
- defineProperty(target, propKey, propDesc): intercetta Object.defineProperty(proxy, propKey, propDesc), Object.defineProperties(proxy, propDescs) e restituisce un valore booleano.
- preventExtensions(target): intercetta Object.preventExtensions(proxy) e restituisce un valore booleano.
- getPrototypeOf(target): intercetta Object.getPrototypeOf(proxy) e restituisce un oggetto.
- isExtensible(target): intercetta Object.isExtensible(proxy) e restituisce un valore booleano.
- setPrototypeOf(target, proto): intercetta Object.setPrototypeOf(proxy, proto) e restituisce un valore booleano. Se l'oggetto di destinazione è una funzione, ci sono due operazioni aggiuntive che possono essere intercettate.
- apply(target, object, args): intercetta l'operazione dell'istanza Proxy come chiamata di funzione, come proxy(...args), proxy.call(object, ...args), proxy.apply(...).
- build(target, args): intercetta l'operazione dell'istanza Proxy come chiamata del costruttore, come new proxy(...args).
utilizzoProxy
Implementare il modello dell'osservatore
