JavaScriptのオブジェクトの属性

属性はJavaScriptオブジェクトの中で最も重要な部分です。

JavaScript属性

属性とはJavaScriptオブジェクトに関連付けられた値のことです。

JavaScriptオブジェクトは無序列の属性の集合です。

属性は通常変更、追加、削除ができますが、一部の属性は読み取り専用です。

JavaScript属性へのアクセス

オブジェクト属性へのアクセス文法は:

objectName.property           // person.age

または:

objectName["property]       // person["age"]

または:

objectName[expression]       // x = "age"; person[x]

式は属性名として計算されなければなりません。

例1

person.firstname + " is " + person.age + " years old.";

自分で試してみる

例2

person["firstname"] + " is " + person["age"] + " years old.";

自分で試してみる

JavaScriptのfor...inループ

JavaScript for...in 文がオブジェクトの属性を巡回します。

文法

for (variable in object) {
    実行するコード
}

for...in ループ内のコードブロックは各属性に対して一度だけ実行されます。

オブジェクトの属性をループする:

var person = {fname:"Bill", lname:"Gates", age:62}; 
for (x in person) {
    txt += person[x];
}

自分で試してみる

新しい属性を追加

既存のオブジェクトに新しい属性を追加するには、シンプルな代入を使用します。

personオブジェクトが既に存在する場合、新しい属性を追加できます:

person.nationality = "English";

自分で試してみる

予約語を属性名(またはメソッド名)として使用することはできません。JavaScriptの命名規則に従ってください。

属性を削除

delete オブジェクトから属性を削除するキーワード:

var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"};
delete person.age;   // または delete person["age"];

自分で試してみる

delete キーワードは属性の値と属性自体を同時に削除します。

削除後、属性が追加される前に使用できません。

delete 演算子はオブジェクトの属性に対して設計されています。変数や関数には影響しません。

delete 演算子はプレデファインされた JavaScript オブジェクトの属性に対して使用すべきではありません。これをすると、アプリケーションがクラッシュする可能性があります。

属性値

すべての属性には名前があります。また、それらには値があります。

値は属性の特性の1つです。

他の特性には、可挙げ性、可設定性、書き換え可能性が含まれます。

これらの特性は属性がアクセスされる方法を定義します(読み取り可能か、書き換え可能か?)

JavaScript では、すべての属性は読み取り可能ですが、値のみが変更可能です(属性が書き換え可能な場合のみ)。

(ECMAScript 5 にはすべての属性特性を取得および設定する方法があります)

プロトタイプ属性

JavaScript オブジェクトはそのプロトタイプの属性を継承します。

delete キーワードは継承された属性を削除しませんが、原型の属性を削除した場合、すべての原型から継承したオブジェクトに影響を与えます。