Object() コンストラクター

Object() コンストラクターは、入力されたものをオブジェクトに変換します。その動作は入力したものの型によって異なります。

構文

js
new Object()
new Object(value)

Object()
Object(value)

メモ: Object()new を付けてもつけなくても呼び出すことができますが、一部の効果が異なることがあります。返値を参照してください。

引数

value 省略可

任意の値。

返値

Object() コンストラクター自体がが呼び出された場合や構築された場合、返値はオブジェクトになります。

  • 値が null または undefined の場合は、空のオブジェクトを作成して返します。
  • 値がすでにオブジェクトである場合は、その値を返します。
  • そうでない場合は、指定された値に対応する型のオブジェクトを返します。例えば、長整数型プリミティブを渡すと、 BigInt ラッパーオブジェクトを返します。

Object() が構築され、 new.targetObject コンストラクター自体でない場合、動作は少し異なります。引数の値は無視されます。これは例えば、 Object を継承したクラスのコンストラクターで、 Object()super() を介して暗黙的に呼び出された場合に発生することがあります。この場合、たとえ super() に数値を渡しても、コンストラクター内の this 値は Number インスタンスにはなりません。

新しい Object の生成

js
const o = new Object();
o.foo = 42;

console.log(o);
// { foo: 42 }

undefinednull 型を指定して Object を使用

以下の例は、空の Object オブジェクトを o に格納します。

js
const o = new Object();
js
const o = new Object(undefined);
js
const o = new Object(null);

BigInt や Symbol のラッパーオブジェクトの取得

BigInt() および Symbol() コンストラクターは、 new で呼び出されるとエラーを発生します。これは、プリミティブ値ではなくラッパーオブジェクトを作成してしまうというよくある間違いを防ぐためです。これらの型のラッパーオブジェクトを作成する唯一の方法は、これらの型で Object() を呼び出すことです。

js
const numberObj = new Number(1);
console.log(typeof numberObj); // "object"

const bigintObj = Object(1n);
console.log(typeof bigintObj); // "object"

const symbolObj = Object(Symbol("foo"));
console.log(typeof symbolObj); // "object"

仕様書

Specification
ECMAScript Language Specification
# sec-object-constructor

ブラウザーの互換性

BCD tables only load in the browser

関連情報