L’API Reflect
Transmettez les opérations avec les méthodes de Reflect.
L’API Reflect est une leçon JavaScript Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage JavaScript Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours JavaScript Academy comprend 4 leçons au total.
Qu'est-ce que Reflect ?
Reflect est un objet intégré dont les méthodes effectuent les opérations de bas niveau par défaut sur les objets : lecture, écriture, suppression et bien plus.
Ses méthodes correspondent une à une aux pièges des proxies, ce qui en fait le partenaire idéal pour écrire des proxies corrects.
Reflect.get
Reflect.get(target, prop) lit une propriété, comme target[prop], mais sous la forme d'un appel de fonction clair.
const obj = { name: 'Ada', age: 36 };
console.log(Reflect.get(obj, 'name'));
console.log(Reflect.get(obj, 'age'));Reflect.set
Reflect.set(target, prop, value) écrit une propriété et renvoie true ou false pour indiquer la réussite, exactement comme l'attend un piège set.
const obj = {};
const ok = Reflect.set(obj, 'score', 42);
console.log(ok);
console.log(obj.score);Reflect.has et deleteProperty
Reflect.has correspond à l'opérateur in, et Reflect.deleteProperty correspond à delete, sous la forme de fonctions qui renvoient des booléens.
const obj = { a: 1, b: 2 };
console.log(Reflect.has(obj, 'a'));
console.log(Reflect.deleteProperty(obj, 'b'));
console.log(Reflect.has(obj, 'b'));Reflect.ownKeys
Reflect.ownKeys renvoie toutes les clés des propriétés propres, y compris les symboles et les propriétés non énumérables, de manière plus complète que Object.keys.
const obj = { a: 1, b: 2 };
Object.defineProperty(obj, 'hidden', { value: 3, enumerable: false });
console.log(Object.keys(obj));
console.log(Reflect.ownKeys(obj));Transmettre dans un proxy
Voici la véritable puissance de cette approche : dans un piège, appelez la méthode Reflect correspondante pour effectuer le comportement par défaut, puis ajoutez votre logique personnalisée autour.
const proxy = new Proxy({ v: 1 }, {
get(target, prop, receiver) {
console.log('reading ' + prop);
return Reflect.get(target, prop, receiver);
}
});
console.log(proxy.v);Transmettre correctement avec set
Utiliser Reflect.set dans un piège set renvoie automatiquement le bon booléen. Vous n'avez donc pas à vous souvenir de renvoyer vous-même true.
const proxy = new Proxy({}, {
set(target, prop, value, receiver) {
console.log('writing ' + prop);
return Reflect.set(target, prop, value, receiver);
}
});
proxy.x = 10;
console.log(proxy.x);Pourquoi receiver est important
Passer receiver à Reflect.get et Reflect.set garantit que les accesseurs de lecture et d'écriture s'exécutent avec le bon this, ce qui est important lorsque des objets héritent les uns des autres.
const base = { get label() { return 'id-' + this.id; } };
const proxy = new Proxy(base, {
get(target, prop, receiver) {
return Reflect.get(target, prop, receiver);
}
});
const child = Object.create(proxy);
child.id = 7;
console.log(child.label);Reflect.apply
Reflect.apply(fn, thisArg, argsArray) appelle une fonction avec un this donné et un tableau d'arguments, constituant une alternative plus claire à fn.apply.
function greet(greeting, name) {
return greeting + ', ' + name;
}
console.log(Reflect.apply(greet, null, ['Hello', 'Ada']));Reflect.construct
Reflect.construct(Cls, argsArray) crée une instance, comme new Cls(...args), mais avec un tableau d'arguments.
class Point {
constructor(x, y) { this.x = x; this.y = y; }
}
const p = Reflect.construct(Point, [3, 4]);
console.log(p.x, p.y);Pourquoi Reflect est important
Reflect fournit des versions prévisibles, sous forme de fonctions, des opérations internes sur les objets et s'associe parfaitement aux proxies : chaque piège transmet l'opération à la méthode Reflect correspondante. Le résultat est un code de proxy correct et minimal. Vous allez maintenant appliquer tout cela à des cas d'utilisation pratiques.
const audited = new Proxy({ balance: 100 }, {
set(t, p, v, r) {
console.log(p + ': ' + t[p] + ' -> ' + v);
return Reflect.set(t, p, v, r);
}
});
audited.balance = 150;
console.log(audited.balance);Vérification rapide
Pourquoi appeler Reflect.get(target, prop, receiver) dans un piège get plutôt que target[prop] ?
Récapitulatif : l'API Reflect
Vous avez découvert le partenaire de Proxy :
Reflectfournit les opérations par défaut sous forme de fonctions :get,set,has,deleteProperty,ownKeys.- Ses méthodes correspondent une à une aux pièges des proxies.
- La transmission via
Reflectavec lereceiverpréserve correctement l'héritage. Reflect.applyetReflect.constructappellent des fonctions et créent des instances proprement.
Questions Fréquemment Posées
La leçon « L’API Reflect » est-elle gratuite ?
Oui — le texte complet de « L’API Reflect » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours JavaScript Academy, passe à CoddyKit PRO. Le cours JavaScript Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « L’API Reflect » ?
Transmettez les opérations avec les méthodes de Reflect. Tu pratiques JavaScript Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer JavaScript Academy ?
Aucune expérience préalable n'est requise. JavaScript Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « L’API Reflect » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon JavaScript Academy ?
Oui. Chaque leçon JavaScript Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.