Baseline Widely available
Die Reflect.set()
-statische Methode funktioniert ähnlich wie die Eigenschafts-Accessor und Zuweisungs-Syntax, jedoch als Funktion.
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.
receiver
Optional
Der Wert von this
, der beim Aufruf des Setters für propertyKey
auf target
bereitgestellt wird. Falls angegeben und target
keinen Setter für propertyKey
hat, wird die Eigenschaft stattdessen auf receiver
gesetzt.
Ein Boolean
, das angibt, ob das Setzen der Eigenschaft erfolgreich war oder nicht.
TypeError
Wird ausgelöst, wenn target
kein Objekt ist.
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.
// 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 Browser-Kompatibilität Siehe auch
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4