Die Reflect-API
Leiten Sie Operationen mit Reflect-Methoden weiter.
Die Reflect-API ist eine kostenlose JavaScript Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des JavaScript Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der JavaScript Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist Reflect?
Reflect ist ein integriertes Objekt mit Methoden, die die standardmäßigen Operationen auf niedriger Ebene für Objekte ausführen: Lesen, Schreiben, Löschen und weitere.
Seine Methoden entsprechen den Proxy-Traps eins zu eins. Dadurch ist Reflect der ideale Partner, um korrekte Proxys zu schreiben.
Reflect.get
Reflect.get(target, prop) liest eine Eigenschaft wie target[prop], jedoch als klaren Funktionsaufruf.
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) schreibt eine Eigenschaft und gibt true oder false zurück, um den Erfolg anzuzeigen, genau wie es ein set-Trap erwartet.
const obj = {};
const ok = Reflect.set(obj, 'score', 42);
console.log(ok);
console.log(obj.score);Reflect.has und deleteProperty
Reflect.has entspricht dem in-Operator und Reflect.deleteProperty entspricht delete – beide als Funktionen, die boolesche Werte zurückgeben.
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 gibt alle eigenen Eigenschaftsschlüssel zurück, einschließlich Symbolen und nicht aufzählbarer Eigenschaften, und ist damit umfassender als 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));Weiterleitung in einem Proxy
Die eigentliche Stärke liegt darin, innerhalb eines Traps die passende Reflect-Methode aufzurufen, um das Standardverhalten auszuführen, und es anschließend um Ihre eigene Logik zu ergänzen.
const proxy = new Proxy({ v: 1 }, {
get(target, prop, receiver) {
console.log('reading ' + prop);
return Reflect.get(target, prop, receiver);
}
});
console.log(proxy.v);set korrekt weiterleiten
Wenn Sie Reflect.set innerhalb eines set-Traps verwenden, wird automatisch der richtige boolesche Wert zurückgegeben. Sie müssen sich also nicht selbst daran erinnern, true zurückzugeben.
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);Warum der receiver wichtig ist
Wenn Sie receiver an Reflect.get und Reflect.set übergeben, werden Getter und Setter mit dem korrekten this ausgeführt. Das ist wichtig, wenn Objekte voneinander erben.
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) ruft eine Funktion mit einem bestimmten this und einem Argumentarray auf und ist eine klarere Alternative zu fn.apply.
function greet(greeting, name) {
return greeting + ', ' + name;
}
console.log(Reflect.apply(greet, null, ['Hello', 'Ada']));Reflect.construct
Reflect.construct(Cls, argsArray) erstellt eine Instanz. Das entspricht new Cls(...args), verwendet jedoch ein Argumentarray.
class Point {
constructor(x, y) { this.x = x; this.y = y; }
}
const p = Reflect.construct(Point, [3, 4]);
console.log(p.x, p.y);Warum Reflect wichtig ist
Reflect stellt vorhersehbare Objektoperationen in Form von Funktionen bereit und passt perfekt zu Proxys: Jeder Trap leitet an die passende Reflect-Methode weiter. Das Ergebnis ist korrekter Proxy-Code mit minimalem Umfang. Als Nächstes wenden Sie all dies auf praktische Anwendungsfälle an.
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);Kurzer Test
Warum sollten Sie innerhalb eines get-Traps Reflect.get(target, prop, receiver) statt target[prop] aufrufen?
Zusammenfassung: Die Reflect-API
Sie haben den Partner von Proxy kennengelernt:
Reflectstellt standardmäßige Operationen in Form von Funktionen bereit:get,set,has,deletePropertyundownKeys.- Seine Methoden entsprechen den Proxy-Traps eins zu eins.
- Die Weiterleitung über
Reflectmit demreceivergewährleistet eine korrekte Vererbung. Reflect.applyundReflect.constructrufen Funktionen auf und erstellen Instanzen auf klare Weise.
Häufig gestellte Fragen
Ist die Lektion „Die Reflect-API“ kostenlos?
Ja — der vollständige Text von „Die Reflect-API“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des JavaScript Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der JavaScript Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Die Reflect-API“?
Leiten Sie Operationen mit Reflect-Methoden weiter. Du übst JavaScript Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um JavaScript Academy zu starten?
Keine Vorkenntnisse erforderlich. JavaScript Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Die Reflect-API“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser JavaScript Academy-Lektion Code schreiben und ausführen?
Ja. Jede JavaScript Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.