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 Loop
JavaScriptfor...in
ステートメントは、オブジェクトのプロパティをループします。
構文
for (let variable in object) {
// code to be executed
}
ループ内のコードのブロックは、for...in
プロパティごとに1回実行されます。
オブジェクトのプロパティをループする:
例
const person = {
fname:" John",
lname:" Doe",
age: 25
};
for (let x in person) {
txt += person[x];
}
新しいプロパティの追加
値を指定するだけで、既存のオブジェクトに新しいプロパティを追加できます。
人物オブジェクトがすでに存在すると仮定します。次に、新しいプロパティを指定できます。
例
person.nationality = "English";
プロパティの削除
キーワードはdelete
、オブジェクトからプロパティを削除します。
例
const person = {
firstName: "John",
lastName: "Doe",
age: 50,
eyeColor: "blue"
};
delete person.age;
またはperson ["age"]を削除します。
例
const person = {
firstName: "John",
lastName: "Doe",
age: 50,
eyeColor: "blue"
};
delete person["age"];
delete
キーワードは、プロパティの値とプロパティ自体の両方を削除します。
削除後、プロパティは再び追加されるまで使用できません。
delete
演算子は、オブジェクトのプロパティで使用するように設計されています。
変数や関数には影響しません。
演算子は、delete
事前定義されたJavaScriptオブジェクトのプロパティでは使用しないでください。アプリケーションがクラッシュする可能性があります。
ネストされたオブジェクト
オブジェクトの値は別のオブジェクトにすることができます。
例
myObj = {
name:"John",
age:30,
cars: {
car1:"Ford",
car2:"BMW",
car3:"Fiat"
}
}
ドット表記またはブラケット表記を使用して、ネストされたオブジェクトにアクセスできます。
例
myObj.cars.car2;
また:
例
myObj.cars["car2"];
また:
例
myObj["cars"]["car2"];
また:
例
let p1 = "cars";
let p2 = "car2";
myObj[p1][p2];
ネストされた配列とオブジェクト
オブジェクトの値は配列にすることができ、配列の値はオブジェクトにすることができます。
例
const myObj =
{
name: "John",
age: 30,
cars: [
{name:"Ford",
models:["Fiesta", "Focus", "Mustang"]},
{name:"BMW", models:["320", "X3", "X5"]},
{name:"Fiat", models:["500", "Panda"]}
]
}
配列内の配列にアクセスするには、配列ごとにfor-inループを使用します。
例
for (let i in myObj.cars) {
x += "<h1>" + myObj.cars[i].name
+ "</h1>";
for (let j in myObj.cars[i].models) {
x += myObj.cars[i].models[j];
}
}
プロパティ属性
すべてのプロパティには名前があります。さらに、それらにも価値があります。
値は、プロパティの属性の1つです。
その他の属性は、列挙可能、構成可能、および書き込み可能です。
これらの属性は、プロパティへのアクセス方法を定義します(読み取り可能か、書き込み可能か)。
JavaScriptでは、すべての属性を読み取ることができますが、変更できるのはvalue属性のみです(プロパティが書き込み可能である場合のみ)。
(ECMAScript 5には、すべてのプロパティ属性の取得と設定の両方のメソッドがあります)
プロトタイプのプロパティ
JavaScriptオブジェクトは、プロトタイプのプロパティを継承します。
キーワードはdelete
継承されたプロパティを削除しませんが、プロトタイププロパティを削除すると、プロトタイプから継承されたすべてのオブジェクトに影響します。