0Pricing
JavaScript Academy · Leçon

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 :

  • Reflect fournit 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 Reflect avec le receiver préserve correctement l'héritage.
  • Reflect.apply et Reflect.construct appellent 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.

Toutes les leçons de ce cours

  1. Créer un Proxy
  2. Intercepteurs get et set
  3. L’API Reflect
  4. Cas pratiques des Proxy
← Retour à JavaScript Academy