Join MDN and developers like you at Mozilla's View Source conference, 12-14 September in Berlin, Germany. Learn more at https://viewsourceconf.org

この記事は編集レビューを必要としています。ぜひご協力ください

Object コンストラクタはオブジェクトラッパーを 1 つ生成します。

構文

// オブジェクトの初期化、あるいはオブジェクトリテラルとして
{ [ nameValuePair1[, nameValuePair2[, ...nameValuePairN] ] ] }

// コンストラクタとして呼び出す場合
new Object([value])

引数

nameValuePair1, nameValuePair2, ... nameValuePairN
名前(文字列)と値(任意の値)からなる組。名前と値はコロンで区切る。
value
任意の値。

説明

Object コンストラクタは与えられた値のオブジェクトラッパーを生成します。値が nullundefined の場合、空のオブジェクトを生成して返します。それ以外の場合、与えられた値に対応する型のオブジェクトを返します。値が元々オブジェクトだった場合には、その値自体を返します。

コンストラクタではないコンテキストで呼び出されたときは、Object は、new Object() と同じように振舞います。

オブジェクト初期化子 / リテラル構文 もご覧ください。

Object コンストラクタプロパティ

Object.length
1 という値を持ちます。
Object.prototype
これを使うと、Object 型を持つすべてのオブジェクトにプロパティを追加できます。

Object コンストラクタメソッド

Object.assign()
1 個以上のソースオブジェクトについて、その直接所有 (own)で列挙可能なプロパティの値をすべてターゲットオブジェクトにコピーして、新しいオブジェクトを生成します。
Object.create()
指定されたプロトタイプオブジェクトとプロパティから、新しいオブジェクトを生成します。
Object.defineProperty()
記述子引数の指定に従って 、名前付きプロパティをオブジェクトに追加します。
Object.defineProperties()
記述子引数の指定に従って、 複数の名前付きプロパティをオブジェクトに追加します。
Object.entries()
指定したオブジェクトの 直接所有 (own) で列挙可能なプロパティを [key, value] のペアからなる配列として返します。
Object.freeze()
指定したオブジェクトを凍結 (freeze) し、オブジェクトのいかなるプロパティも変更または削除できないようにします。
Object.getOwnPropertyDescriptor()
指定したオブジェクトの名前付きプロパティに対応するプロパティ記述子を返します。
Object.getOwnPropertyNames()
指定したオブジェクトの 直接所有 (own) で列挙可能および列挙不可なすべてのプロパティの名前を、配列として返します。
Object.getOwnPropertySymbols()
指定したオブジェクト上に直接存在するすべてのシンボルプロパティからなる配列を返します。
Object.getPrototypeOf()
指定したオブジェクトのプロトタイプを返します。
Object.is()
2 つの値が区別可能かどうか(つまり同じものかどうか)を比較します。
Object.isExtensible()
オブジェクトに対する拡張 (extension) が許可されているかを判定します。
Object.isFrozen()
オブジェクトが凍結 (freeze) されているかを判定します。
Object.isSealed()
オブジェクトが封印 (seal) されているかを判定します。
Object.keys()
指定したオブジェクトの 直接所有 (own) で列挙可能なプロパティの名前をすべて含む配列を返します。
Object.preventExtensions()
オブジェクトに対するあらゆる拡張 (extension) を禁止します。
Object.seal()
オブジェクトを封印 (seal) し、オブジェクトのプロパティの削除を禁止します。
Object.setPrototypeOf()
プロトタイプ(すなわち、内部の [[Prototype]] プロパティ)を設定します。
Object.values()
指定したオブジェクトの 直接所有 (own) で列挙可能な値を、配列として返します。

Object インスタンスと Object プロトタイプオブジェクト

JavaScript におけるすべてのオブジェクトは Object に由来します。すべてのオブジェクトは Object.prototype からメソッドとプロパティを継承していますが、それらは上書きされている可能性があります。例えば、他のコンストラクタのプロトタイプは constructor プロパティを上書きしており、それぞれが toString メソッドを提供しています。Object のプロトタイプオブジェクトへの変更は、その変更に関連するプロパティとメソッドがプロトタイプチェーンによってさらに上書きされている場合を除いて、すべてのオブジェクトに影響します。

プロパティ

Object.prototype.constructor
オブジェクトのプロトタイプを生成する関数への参照を返します。
Object.prototype.__proto__
オブジェクトをインスタンス化する際にプロトタイプとして使用するオブジェクトへのポインタです。
Object.prototype.__noSuchMethod__
未定義のオブジェクトメンバーがメソッドとして呼び出された際に実行される関数を定義します。
Object.prototype.__count__
ユーザーが定義したオブジェクト上に直接存在する列挙可能プロパティの数を返すのに使用されていましたが、この機能は削除されました。
Object.prototype.__parent__
オブジェクトのコンテキストを表すポインタでしたが、この機能は削除されました。

メソッド

Object.prototype.__defineGetter__()
指定したプロパティに、アクセスの際に実行されて戻り値を返す関数を関連付けます。
Object.prototype.__defineSetter__()
指定したプロパティに、設定の際に実行されてプロパティを変更する関数を関連付けます。
Object.prototype.__lookupGetter__()
__defineGetter__() メソッドによって特定のプロパティに関連付けされた関数を返します。
Object.prototype.__lookupSetter__()
__defineSetter__() メソッドによって特定のプロパティに関連付けされた関数を返します。
Object.prototype.hasOwnProperty()
指定したプロパティが、プロトタイプチェーンを通じて継承されたものではなくオブジェクトが直接持っているプロパティかどうかを示す真偽値を返します。
Object.prototype.isPrototypeOf()
指定したオブジェクトが、このメソッドを呼び出した元であるオブジェクトのプロトタイプチェーンにあるかどうかを示す真偽値を返します。
Object.prototype.propertyIsEnumerable()
内部の ECMAScript [[Enumerable]] 属性 の設定状態を示す真偽値を返します。
Object.prototype.toSource()
このメソッドの呼び出し元オブジェクトを表すオブジェクトリテラルからなるソース文字列を返します。この値を使って新しいオブジェクトを作成できます。
Object.prototype.toLocaleString()
toString() を呼び出します。
Object.prototype.toString()
指定したオブジェクトを表す文字列を返します。
Object.prototype.unwatch()
オブジェクトのプロパティから代入処理を監視するウォッチポイントを取り除きます。
Object.prototype.valueOf()
指定したオブジェクトのプリミティブ値を返します。
Object.prototype.watch()
オブジェクトのプロパティに代入処理を監視するウォッチポイントを追加します。
Object.prototype.eval()
指定されたオブジェクトが持つコンテキスト内で JavaScript コードの文字列を評価するメソッドでしたが、この機能は削除されました。

使用例

undefinednull データ型を与えられた Object を使用する

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

var o = new Object();
var o = new Object(undefined);
var o = new Object(null);

Boolean オブジェクトの生成に Object を使用する

次の例は、oBoolean オブジェクトを格納します :

// o = new Boolean(true); に同じ
var o = new Object(true);
// to o = new Boolean(false); に同じ
var o = new Object(Boolean());

仕様

仕様 策定状況 コメント
ECMAScript 1st Edition (ECMA-262) 標準 初期定義。JavaScript 1.0 にて実装。
ECMAScript 5.1 (ECMA-262)
Object の定義
標準  
ECMAScript 2015 (6th Edition, ECMA-262)
Object の定義
標準 Object.assign、Object.getOwnPropertySymbols、Object.setPrototypeOf を追加。
ECMAScript 2017 Draft (ECMA-262)
Object の定義
ドラフト Object.entries、Object.values を追加。

ブラウザ実装状況

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
基本サポート (有) (有) (有) (有) (有)
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート (有) (有) (有) (有) (有) (有)

関連情報

ドキュメントのタグと貢献者

 最終更新者: xxxkurosukexxx,