オブジェクト (object)

オブジェクトとプロパティの作成

オブジェクトの作成とそのプロパティの作成には複数の方法が存在し、次の6つのコードは同一の結果を得ます。

コード 説明 プロパティ名
の指定方法
var obj = new Object();
obj.foo = 'bar';
Objectインスタンスを作成し、未定義のプロパティを定義。 識別子
var obj = new Object();
obj[ 'foo' ] = 'bar';
連想配列でプロパティを作成。 文字列
var obj = Object();
obj.foo = 'bar';
new演算子を省略し、Objectインスタンスを作成。 識別子
var obj = { foo:'bar' };
オブジェクトリテラルとして、プロパティを初期化して作成。 識別子
var obj = { 'foo':'bar' };
プロパティ名を文字列で指定。 文字列
var obj = {};
obj.foo = 'bar';
オブジェクトリテラルとして、プロパティを設定せず作成。 識別子
JavaScript の配列と連想配列の違い - IT戦記

プロパティと連想配列

オブジェクトのプロパティへは配列演算子 ([ ]) を用いてアクセスできるため、これを利用すれば連想配列としてプロパティを使用できます。例えば次の2つは、同一のプロパティを示します。

image.width
image[ 'width' ]

プロパティ名を文字列で指定できるため、これを活用することでアクセスするプロパティを動的に変更することも可能です。また、プロパティ名に使用できない文字が使えるようになります。例えばobj.@は不可ですが、obj[ '@' ]は可能です。

詳細は配列のページで解説しています。

オブジェクトリテラル (オブジェクトイニシャライザ)

オブジェクトの生成時に、プロパティを初期化できます。
オブジェクト初期化子の使用法 - MDC

{ プロパティ名:値, プロパティ名:値, ... }

最後のプロパティの後にカンマ (,) を付けると、IE6とIE7では「識別子、文字列または数がありません。」としてエラーとなる。IE8やFirefoxでは問題ない。

次の2つのコードは同じ結果となります。

var point = new Object();
point.x = 1.0;
point.y = 2.0;
var point = { x:1.0, y:2.0 };

オブジェクトのプロパティを一覧表示する

あるオブジェクトのインスタンスに対してfor( in )でループ処理することで、そのオブジェクトで定義されているプロパティを一覧できます。またそのプロパティ名をキーとすることで、そのインスタンスにおけるプロパティの値も取得できます。

なお組み込みプロパティの多くは、この方法では取得できません。また取得する順序を指定することはできません

function ShowProperties( object )
{
    var text = '';
    for( var propertyName in object )
    {
        var propertyValue = object[ propertyName ];

        text += [ propertyName, ' : ', propertyValue, '\n' ].join( '' );
    }

    window.alert( text );
}

取得例

例えば上記の関数に対してwindow.screenを引数にして呼び出すと、次のような結果を取得できます。

top : 120
height : 768
width : 1024
left : -1024
pixelDepth : 24
colorDepth : 24
availWidth : 1024
availHeight : 768
availLeft : -1024
availTop : 120
※ 取得結果はFirefoxの場合。これはブラウザによって異なります。

null値

nullとは、オブジェクトがないことを表すオブジェクト型の値です。

用途 変換後の値
論理コンテキスト false
数値コンテキスト 0
文字列コンテキスト null