メインコンテンツまでスキップ

オブジェクト

オブジェクト

JavaScript で扱うことのできるの種類として、これまで数値文字列論理値を扱ってきました。オブジェクトもまた、JavaScriptですが、今まで扱ってきたとは少し性質が異なります。

オブジェクトを用いると、これまで扱ってきたような単純なを複数まとめて一つのとして扱うことができます。

今まで扱ってきたような「それ以上分解できない」のことをプリミティブといい、プリミティブでない値はすべてオブジェクトです。

値の種類・オブジェクト付き

ほかの言語の経験者へ

JavaScript のオブジェクトは、ほかの言語でいう辞書連想配列Map に近いものです。ただ、こういったものと比べ、JavaScript のオブジェクトは使用頻度が非常に高いです。

オブジェクトの作成

オブジェクトは、複数のプロパティと呼ばれるを持ちます。プロパティにはそれぞれ名前がついています。プロパティの名前には文字列しか指定できませんが、プロパティとしては JavaScript で使用できるすべてのが使用可能です。
let person = { name: "田中", age: 18 };

プロパティ

オブジェクトの中にオブジェクトを入れることもできます。

let person = {
name: "田中",
scores: { math: 80, science: 90 },
};
注記

オブジェクトプロパティは、CSS におけるプロパティと似ているものの、全く異なるものです。文脈により何を意味しているのかが変わるので注意してください。

オブジェクトプロパティを取得・変更する

ドット記号を用いることで、オブジェクトプロパティを取得・変更できます。通常の変数のように扱えます。

person.age = person.age + 1;
document.write(person.age);
複合代入演算子

複合代入演算子は、計算と代入を同時に行うことができる演算子です。

x += y は、x = x + y という意味になります。他にも -=*= などの演算子が定義されています。x -= yx = x - yx *= yx = x * y という意味になります。

複合代入演算子を用いると、先ほどのプログラムは以下のように書くことができます。

person.age += 1;
document.write(person.age);

課題

オブジェクトの一種なので、関数引数戻り値として使用できます。

age プロパティに 1 を加えたオブジェクトを返す関数 incrementAge を定義してみましょう。

function incrementAge(person) {
// ここに書く
}

let tanaka = { name: "田中", age: 18 };
let nextYearTanaka = incrementAge(tanaka);
document.write(nextYearTanaka.age); // 19 と表示されてほしい