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.

静的な Reflect.set() メソッドは、オブジェクトにプロパティを設定するかのように動作します。

試してみましょう

構文

Reflect.set(target, propertyKey, value[, receiver])

引数

target

プロパティを設定する対象のオブジェクト。

propertyKey

設定するプロパティ名。

value

設定する値。

receiver 省略可

セッターによって target が呼び出されたときの this 値を提供する。

返値

プロパティが成功裏に設定できたかどうかを示す Boolean 値。

例外

TypeError: targetObject ではなかった場合。

解説

Reflect.set メソッドは、オブジェクトにプロパティを設定します。これはプロパティの割り当てを行い、機能としては プロパティアクセサー 構文のようなものです。

Reflect.set() の使用

js
// オブジェクト
let obj = {};
Reflect.set(obj, "prop", "value"); // true
obj.prop; // "value"

// 配列
let arr = ["duck", "duck", "duck"];
Reflect.set(arr, 2, "goose"); // true
arr[2]; // "goose"

// 配列を切り詰められる。
Reflect.set(arr, "length", 1); // true
arr; // ["duck"]

// 引数が1つだけだと、プロパティキーと値は "undefined" になる。
let obj = {};
Reflect.set(obj); // true
Reflect.getOwnPropertyDescriptor(obj, "undefined");
// { value: undefined, writable: true, enumerable: true, configurable: true }

仕様書

Specification
ECMAScript Language Specification
# sec-reflect.set

ブラウザーの互換性

BCD tables only load in the browser

関連情報