Reflect.has()
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit September 2016 browserübergreifend verfügbar.
Die statische Methode Reflect.has() ähnelt dem in-Operator, wird aber als Funktion aufgerufen.
Probieren Sie es aus
const object = {
property1: 42,
};
console.log(Reflect.has(object, "property1"));
// Expected output: true
console.log(Reflect.has(object, "property2"));
// Expected output: false
console.log(Reflect.has(object, "toString"));
// Expected output: true
Syntax
Reflect.has(target, propertyKey)
Parameter
target-
Das Zielobjekt, in dem nach der Eigenschaft gesucht wird.
propertyKey-
Der Name der zu prüfenden Eigenschaft.
Rückgabewert
Ein Boolean-Wert, der angibt, ob target die Eigenschaft besitzt.
Ausnahmen
TypeError-
Wird ausgelöst, wenn
targetkein Objekt ist.
Beschreibung
Reflect.has() ermöglicht die reflektive Prüfung, ob eine Eigenschaft in einem Objekt vorhanden ist. Das heißt, Reflect.has(target, propertyKey) ist semantisch gleichbedeutend mit:
propertyKey in target;
Reflect.has() ruft die objektinterne Methode [[HasProperty]] von target auf.
Beispiele
>Reflect.has() verwenden
Reflect.has({ x: 0 }, "x"); // true
Reflect.has({ x: 0 }, "y"); // false
// returns true for properties in the prototype chain
Reflect.has({ x: 0 }, "toString");
// Proxy with .has() handler method
obj = new Proxy(
{},
{
has(t, k) {
return k.startsWith("door");
},
},
);
Reflect.has(obj, "doorbell"); // true
Reflect.has(obj, "dormitory"); // false
Wie der in-Operator gibt Reflect.has auch für geerbte Eigenschaften true zurück:
const a = { foo: 123 };
const b = { __proto__: a };
const c = { __proto__: b };
// The prototype chain is: c -> b -> a
Reflect.has(c, "foo"); // true
Spezifikationen
| Spezifikation |
|---|
| ECMAScript® 2027 Language Specification> # sec-reflect.has> |