Un proxy en JavaScript est un objet spécial qui vous permet de personnaliser le comportement des opérations fondamentales (par exemple, recherche de propriété, affectation, énumération, appel de fonction, etc.) sur un autre objet. C'est comme avoir un intermédiaire espiègle qui peut intercepter et modifier les interactions avec un objet.
Les proxys sont utiles pour diverses raisons :
Validation : Garantir l'intégrité des données en validant les affectations.
Journalisation : suivez les opérations sur un objet pour le débogage ou la surveillance.
Valeurs par défaut : Fournissez les valeurs par défaut lors de l'accès aux propriétés.
Contrôle d'accès : Restreindre ou modifier l'accès à certaines propriétés.
Propriétés virtuelles : Définissez des propriétés qui n'existent pas physiquement sur l'objet.
Imaginez que vous avez un enfant nommé Timmy et que vous voulez vous assurer qu'il ne mange pas trop de cookies. Vous agissez comme un parent surprotecteur, surveillant et contrôlant sa consommation de cookies.
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."
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!