JavaScriptにおけるObject.createの引数

ECMAScript5で定義されたObject.createを利用するとコンストラクタ関数とnew演算子を利用する方法以外でオブジェクトを生成することができる。

Object.createを利用する

上記のようにObject.createに元となるオブジェクトをプロトタイプとして渡すことで、新しいオブジェクトを生成することができる。
但し、そもそもコンストラクタ関数が無いのでコンストラクタ引数に初期値を与えることができない。

 

Object.createの第二引数

Object.createを利用する上でコンストラクタ引数に相当するものは、第二引数になる。

尚、Object.createの第二引数は以下のように形式が厳密に定義されている。

フィールド既定値内容
valueundefinedプロパティの値。データディスクリプタのみ。
writablefalsetrueの場合、値を変更可能。データディスクリプタのみ。
configurablefalsetrueの場合、ディスクリプタ変更や、オブジェクトからプロパティ削除が可能。
enumerablefalsetrueの場合、対応するオブジェクトのプロパティ列挙に現れる。
getundefinedGetter関数。アクセサディスクリプタのみ。
setundefinedSetter関数。アクセサディスクリプタのみ。

上記の規定に従い、オブジェクト生成時に初期値を与えてみる。

上記の例では、プロトタイプに定義したnameの値がオブジェクト生成時に指定した値に書き換わっている。
また、同時に新しいメソッド(bark)を追加している。
尚、nameプロパティを書き換え可能にするには、”{value: “SANTA”, writable: true}”のようにwritableフィールドにtrueを設定する必要がある。
同様にプロパティ列挙に表示したい場合やプロパティの削除を可能にしたい場合も、対応するフィールドの設定をtrueに変更する必要がある。

 

おすすめ

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください