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

構文

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

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

引数

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

説明

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

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

object initializer / literal の構文もご覧ください。

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

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

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

Object.assign()
1 個以上のソースオブジェクトについて、自身の列挙可能なプロパティの値をすべてターゲットオブジェクトにコピーします。
Object.create()
指定されたプロトタイプオブジェクトとプロパティから、新しいオブジェクトを生成します。
Object.defineProperty()
記述子引数の指定に従って 、名前付きプロパティをオブジェクトに追加します。
Object.defineProperties()
記述子引数の指定に従って、複数の名前付きプロパティをオブジェクトに追加します。
Object.entries()
指定したオブジェクトの自身の列挙可能な文字列プロパティのすべての [key, value] ペアを含む配列を返します。
Object.freeze()
指定したオブジェクトを凍結し、オブジェクトのいかなるプロパティも変更または削除できないようにします。
Object.fromEntries()
キーと値の組を繰り返す新しいオブジェクト (Object.entries の逆) を返します。
Object.getOwnPropertyDescriptor()
指定したオブジェクトの名前付きプロパティに対応するプロパティ記述子を返します。
Object.getOwnPropertyDescriptors()
オブジェクトの自身のすべてのプロパティの記述子を含むオブジェクトを返します。
Object.getOwnPropertyNames()
指定したオブジェクトの自身の列挙可能および列挙不可なすべてのプロパティの名前を、配列として返します。
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()
指定したオブジェクトの自身の列挙可能な文字列プロパティのすべてに対応する値を含む配列を返します。

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 コードの文字列を評価するメソッドでしたが、この機能は削除されました。

オブジェクトからプロパティを消す

Object 自身には自身のプロパティを削除する (例 Map.prototype.delete() のような) メソッドはありません。これを行うには delete 演算子を使います。

使用例

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, Object.is を追加。
ECMAScript Latest Draft (ECMA-262)
Object の定義
ドラフト Object.entries, Object.values, Object.getOwnPropertyDescriptors を追加。

ブラウザーの対応

機能ChromeEdgeFirefoxInternet ExplorerOperaSafari
基本対応 あり あり1 あり あり あり
prototype あり あり1 あり あり あり
__count__ なし なし なし なし なし なし
__noSuchMethod__ なし なし1 — 43 なし なし なし
__parent__ なし なし なし なし なし なし
__proto__ あり あり111 あり あり
constructor あり あり1 あり あり あり
assign45 あり34 なし329
create5 あり4911.65
defineProperties5 あり4911.65
defineProperty5 あり49111.65.12
entries541447 なし4110.1
freeze6 あり49125.1
fromEntries なし なし63 なし なし なし
getNotifier36 — 52 なし なし なし なし なし
getOwnPropertyDescriptor5 あり48125
getOwnPropertyDescriptors541550 なし4110
getOwnPropertyNames5 あり49125
getOwnPropertySymbols38 あり36 なし259
getPrototypeOf5 あり3.5912.15
is30 あり22 なし あり9
isExtensible6 あり49125.1
isFrozen6 あり49125.1
isSealed6 あり49125.1
keys5 あり49125
observe36 — 52 なし なし なし なし なし
preventExtensions6 あり49125.1
__defineGetter__ あり あり1411 あり あり
__defineSetter__ あり あり1411 あり あり
__lookupGetter__ あり あり111 あり あり
__lookupSetter__ あり あり111 あり あり
eval なし なし なし なし なし なし
hasOwnProperty あり あり1 あり あり あり
isPrototypeOf あり あり あり あり あり あり
propertyIsEnumerable あり あり あり あり あり あり
toLocaleString あり あり1 あり あり あり
toSource なし なし1 なし なし なし
toString あり あり1 あり あり あり
unwatch なし なし1 — 58 なし なし なし
valueOf あり あり1 あり あり あり
watch なし なし1 — 58 なし なし なし
seal6 あり49125.1
setPrototypeOf34 あり3111 あり9
unobserve36 — 52 なし なし なし なし なし
values541447 なし4110.1
機能Android webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
基本対応 あり あり あり4 あり あり あり
prototype あり あり あり4 あり あり あり
__count__ なし なし なし なし なし なし なし
__noSuchMethod__ なし なし なし4 — 43 なし なし なし
__parent__ なし なし なし なし なし なし なし
__proto__ あり あり あり4 あり あり あり
constructor あり あり あり4 あり あり あり
assign なし45 あり34 なし あり5.0
create あり あり あり411.5 あり あり
defineProperties あり あり あり411.5 あり あり
defineProperty あり あり あり411.5 あり あり
entries5454 あり474110.16.0
freeze あり あり あり4 あり あり あり
fromEntries なし なし なし63 なし なし なし
getNotifier なし なし なし なし なし なし なし
getOwnPropertyDescriptor あり あり あり4 あり あり あり
getOwnPropertyDescriptors ?54 あり50 ? ?6.0
getOwnPropertyNames あり あり あり4 あり あり あり
getOwnPropertySymbols5.138 あり36259 あり
getPrototypeOf あり あり あり4 あり あり あり
is あり あり あり22 あり9 あり
isExtensible あり あり あり4 あり あり あり
isFrozen あり あり あり4 あり あり あり
isSealed あり あり あり4 あり あり あり
keys あり あり あり4 あり あり あり
observe なし なし なし なし なし なし なし
preventExtensions あり あり あり4 あり あり あり
__defineGetter__ あり あり あり4 あり あり あり
__defineSetter__ あり あり あり4 あり あり あり
__lookupGetter__ あり あり あり4 あり あり あり
__lookupSetter__ あり あり あり4 あり あり あり
eval なし なし なし なし なし なし なし
hasOwnProperty あり あり あり4 あり あり あり
isPrototypeOf あり あり あり あり あり あり あり
propertyIsEnumerable あり あり あり あり あり あり あり
toLocaleString あり あり あり4 あり あり あり
toSource なし なし なし4 なし なし なし
toString あり あり あり4 あり あり あり
unwatch なし なし なし4 — 58 なし なし なし
valueOf あり あり あり4 あり あり あり
watch なし なし なし4 — 58 なし なし なし
seal あり あり あり4 あり あり あり
setPrototypeOf あり あり あり31 あり あり あり
unobserve なし なし なし なし なし なし なし
values5454 あり474110.36.0

1. Also supported in Internet Explorer 8, but only on DOM objects and with some non-standard behaviors.

2. Also supported in Safari 5, but not on DOM objects.

3. From version 6.5.0: this feature is behind the --harmony runtime flag.

4. Starting with Firefox 48, this method can no longer be called at the global scope without any object. A TypeError will be thrown otherwise. Previously, the global object was used in these cases automatically, but this is no longer the case.

関連情報

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

最終更新者: mfuji09,