JScript の Object オブジェクト
更新 : 2007 年 11 月
Object オブジェクトを基本とする JScript のオブジェクトはすべて、expando プロパティ、またはプログラムの実行中に追加および削除できるプロパティをサポートします。
Object オブジェクトの使用
これらのプロパティには、数値を含む任意の名前を指定できます。単純な識別子であるプロパティの名前は、オブジェクト名の後ろにピリオドに続いて記述できます。次に例を示します。
var myObj = new Object();
// Add two expando properties, 'name' and 'age'
myObj.name = "Fred";
myObj.age = 53;
また、添字演算子 [] を使用してオブジェクトのプロパティにアクセスすることもできます。プロパティの名前が単純な識別子でない場合や、プロパティの名前がスクリプトの作成時にわからない場合は、この方法を使用します。単純な識別子を含め、角かっこ内の任意の式では、プロパティをインデックス指定できます。JScript のすべての expando プロパティの名前は、オブジェクトに追加される前に文字列に変換されます。
添字演算子を使用する場合、オブジェクトは "連想配列" として扱われます。連想配列は、任意のデータ値を任意の文字列に動的に関連付けるデータ構造です。次の例では、単純な識別子を持たない expando プロパティが追加されています。
var myObj = new Object();
// This identifier contains spaces.
myObj["not a simple identifier"] = "This is the property value";
// This identifier is a number.
myObj[100] = "100";
添字演算子は、通常、配列の要素にアクセスするために使用されます。オブジェクトで使用された場合、かっこで囲まれたインデックス部分は、常にリテラル文字列として表現されたプロパティ名になります。
Array オブジェクトには、新しい要素が追加されたときに変更される length という特殊なプロパティがあります。通常のオブジェクトには、添え字演算子を使用してプロパティが追加された場合に変更される length プロパティはありません。
オブジェクトのプロパティにアクセスする 2 つの方法には、次の表に示すように重要な違いがあります。
演算子 |
プロパティ名の扱い |
プロパティ名の操作上の差異 |
---|---|---|
ピリオド (.) |
識別子 |
データとして操作できません。 |
インデックス ([]) |
リテラル文字列 |
データとして操作できます。 |
ユーザーの入力データによってオブジェクトを作成するなど、実行時までプロパティ名がわからない場合は、上の表で説明した違いを有効に利用してください。連想配列からすべてのプロパティを取得するには、for ... in ループを使用する必要があります。