Reflect.set()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.
Die Reflect.set()-statische Methode funktioniert ähnlich wie die Eigenschafts-Accessor und Zuweisungs-Syntax, jedoch als Funktion.
Probieren Sie es aus
const object = {};
Reflect.set(object, "foo", 42);
console.log(object.foo);
// Expected output: 42
const array = ["duck", "duck", "duck"];
Reflect.set(array, 2, "goose");
console.log(array[2]);
// Expected output: "goose"
Syntax
Reflect.set(target, propertyKey, value)
Reflect.set(target, propertyKey, value, receiver)
Parameter
target-
Das Zielobjekt, auf dem die Eigenschaft gesetzt werden soll.
propertyKey-
Der Name der zu setzenden Eigenschaft.
value-
Der zu setzende Wert.
receiverOptional-
Der Wert von
this, der beim Aufruf des Setters fürpropertyKeyauftargetbereitgestellt wird. Falls angegeben undtargetkeinen Setter fürpropertyKeyhat, wird die Eigenschaft stattdessen aufreceivergesetzt.
Rückgabewert
Ein Boolean, das angibt, ob das Setzen der Eigenschaft erfolgreich war oder nicht.
Ausnahmen
TypeError-
Wird ausgelöst, wenn
targetkein Objekt ist.
Beschreibung
Reflect.set() bietet die reflektierende Semantik eines Eigenschaftszugriffs. Das heißt, Reflect.set(target, propertyKey, value, receiver) entspricht semantisch:
target[propertyKey] = value;
Beachten Sie, dass bei einem normalen Eigenschaftszugriff target und receiver für gewöhnlich dasselbe Objekt sind.
Reflect.set() ruft die [[Set]] interne Objektmethode von target auf.
Beispiele
>Nutzung von Reflect.set()
// Object
const obj = {};
Reflect.set(obj, "prop", "value"); // true
obj.prop; // "value"
// Array
const arr = ["duck", "duck", "duck"];
Reflect.set(arr, 2, "goose"); // true
arr[2]; // "goose"
// It can truncate an array.
Reflect.set(arr, "length", 1); // true
arr; // ["duck"]
// With just one argument, propertyKey and value are "undefined".
Reflect.set(obj); // true
Reflect.getOwnPropertyDescriptor(obj, "undefined");
// { value: undefined, writable: true, enumerable: true, configurable: true }
Unterschiedliches Ziel und Empfänger
Wenn target und receiver unterschiedlich sind, verwendet Reflect.set den Eigenschaftsdeskriptor von target (um den Setter zu finden oder zu bestimmen, ob die Eigenschaft schreibbar ist), setzt jedoch die Eigenschaft auf receiver.
const target = {};
const receiver = {};
Reflect.set(target, "a", 2, receiver); // true
// target is {}; receiver is { a: 2 }
const target = { a: 1 };
const receiver = {};
Reflect.set(target, "a", 2, receiver); // true
// target is { a: 1 }; receiver is { a: 2 }
const target = {
set a(v) {
this.b = v;
},
};
const receiver = {};
Reflect.set(target, "a", 2, receiver); // true
// target is { a: [Setter] }; receiver is { b: 2 }
Spezifikationen
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-reflect.set> |
Browser-Kompatibilität
Loading…