Object.defineProperties()
Object.defineProperties()
メソッドは、オブジェクトに直接新しいプロパティを定義し、あるいは既存のプロパティを変更して、そのオブジェクトを返します。
試してみましょう
構文
Object.defineProperties(obj, props)
引数
obj
-
プロパティを定義または変更するオブジェクト。
props
-
キーが定義または変更されるプロパティの名前を表し、値がそれらのプロパティを記述するオブジェクトであるオブジェクトです。
props
の各値は、データ記述子かアクセサー記述子のいずれかでなければなりませんが、両方を指定することはできません (詳細はObject.defineProperty()
を参照してください)。データ記述子およびアクセサー記述子は、オプションで以下のキーを含むことができます。
configurable
-
プロパティの記述子が変更でき、プロパティが対応するオブジェクトから削除できるときのみ
true
。 既定値はfalse
。 enumerable
-
対応するオブジェクトのプロパティを列挙したとき表示される場合のみ
true
。 既定値はfalse
。
データ記述子には以下のオプションのキーもあります。
value
-
プロパティに関連づける値。 JavaScript で有効な任意の値です (数値、オブジェクト、関数など)。 既定値は
undefined
。 writable
-
プロパティに関連づけられた値がassignment operatorで変更できる場合のみ
true
。 既定値はfalse
。アクセサー記述子には、以下のオプションのキーもあります。
get
-
プロパティのゲッターとして用いられる関数。ゲッターがなければ
undefined
になります。関数の返値がプロパティの値として使用されます。 既定値はundefined
。 set
-
プロパティのセッターとして用いられる関数。セッターがなければ
undefined
になります。関数はただひとつの引数として、プロパティに代入された新たな値を受取ります。 既定値はundefined
。
記述子が
value
,writable
,get
set
キーのいずれでもない場合は、データ記述子として扱われます。記述子にvalue
またはwritable
とget
またはset
キーの両方があった場合は、例外が発生します。
返値
関数に渡されたオブジェクト。
例
Object.defineProperties の使用
const obj = {};
Object.defineProperties(obj, {
property1: {
value: true,
writable: true,
},
property2: {
value: "Hello",
writable: false,
},
// etc. etc.
});
仕様書
Specification |
---|
ECMAScript Language Specification # sec-object.defineproperties |
ブラウザーの互換性
BCD tables only load in the browser