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 Property-Accessor und Zuweisungs Syntax, jedoch als Funktion.
Probieren Sie es aus
const object1 = {};
Reflect.set(object1, "property1", 42);
console.log(object1.property1);
// Expected output: 42
const array1 = ["duck", "duck", "duck"];
Reflect.set(array1, 2, "goose");
console.log(array1[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.
receiver
Optional-
Der Wert von
this
, der für den Aufruf des Setters vonpropertyKey
auftarget
bereitgestellt wird. Wenn angegeben undtarget
keinen Setter fürpropertyKey
hat, wird die Eigenschaft stattdessen aufreceiver
gesetzt.
Rückgabewert
Ein Boolean
, der angibt, ob das Setzen der Eigenschaft erfolgreich war oder nicht.
Ausnahmen
TypeError
-
Wird ausgelöst, wenn
target
kein Objekt ist.
Beschreibung
Reflect.set()
stellt die reflexive Semantik eines Property-Zugriffs bereit. Das bedeutet, Reflect.set(target, propertyKey, value, receiver)
ist semantisch gleichwertig mit:
target[propertyKey] = value;
Es ist zu beachten, dass bei einem normalen Property-Zugriff target
und receiver
erkennbar dasselbe Objekt sind.
Reflect.set()
ruft die [[Set]]
interne Methoden eines Objekts von target
auf.
Beispiele
Verwendung 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, wird Reflect.set
den Eigenschaftsbeschreiber von target
verwenden (um den Setter zu finden oder festzustellen, ob die Eigenschaft schreibbar ist), aber die Eigenschaft auf receiver
setzen.
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 |