オブジェクト
オブジェクトは、関係のある値を名前の下にまとめます。{ name: "Coco", age: 3 } では、pet.name は "Coco"、pet.age は 3 になります。
ラベルのついた値
配列は、似たものを順番に並べたリストに向いています。でも世の中の多くのものは、ラベルのついた事実の集まりで表すほうがうまくいきます。ペットには名前と種類と年齢があり、商品には名前と価格と在庫数があります。オブジェクトはまさにそれを保存します。オブジェクトはプロパティの集まりで、それぞれのプロパティはキー(ラベル)と値の組です。
const pet = {
name: "Coco",
kind: "cat",
age: 3,
};
console.log(pet.name); // Coco
console.log(pet["kind"]); // cat
console.log(pet.age + 1); // 4オブジェクトは波かっこの中に、それぞれのプロパティを key: value の形で書き、あいだをコンマで区切ります。最後のプロパティのあとにコンマを置いてもかまいません。プロパティを読むには、オブジェクト、ドット、キーの順に書きます。pet.name です。もう一つの書き方は角かっこと文字列を使う pet["kind"] です。pet[field] のようにキーが変数に入っているときや、キーに空白がふくまれるときは角かっこが必要です。存在しないキーを読むと undefined になります。
プロパティを変える、加える
プロパティに代入すると値が変わり、新しいキーに代入するとプロパティが加わります。配列と同じように、オブジェクトを const で宣言していてもこれはできます。変数は同じオブジェクトを指したままだからです。
const player = { name: "Sam", score: 0 };
player.score += 10;
player.level = 2;
console.log(`${player.name} ${player.score} ${player.level}`); // Sam 10 2
delete player.level;
console.log(player.level); // undefinedオブジェクトのリスト
配列とオブジェクトは自然に組み合わせられます。ほとんどのプログラムは、オブジェクトの配列でデータの記録を持っています。買い物かご、クラスの名簿、検索結果の一覧などです。配列をループで回し、それぞれのオブジェクトから必要なプロパティを読みます。
const basket = [
{ item: "pen", price: 2 },
{ item: "book", price: 12 },
{ item: "bag", price: 25 },
];
let total = 0;
for (const line of basket) {
total += line.price;
}
console.log("Total:", total); // Total: 39オブジェクトの中の値は、配列やほかのオブジェクトもふくめて何でもかまいません。const user = { name: "Ana", tags: ["admin", "editor"] }; なら、user.tags[0] と書いて "admin" にたどりつけます。このようなつながりは左から右へ読みます。user から始めて、その tags プロパティに進み、インデックス 0 をとります。
メソッドとオブジェクトのキー
値が関数であるプロパティをメソッドと呼びます。あなたはずっとメソッドを呼び出してきました。console.log は console オブジェクトの log メソッドで、Math.round は Math の round メソッドです。メソッドの中では、キーワード this がそのメソッドを呼び出したオブジェクトを指すので、メソッドは自分のオブジェクトのプロパティを読めます。最後に、Object.keys(pet) はキーの配列を返します。ここでは ["name", "kind", "age"] で、すべてのプロパティをループで回すのに便利です。
const counter = {
count: 0,
add() {
this.count++;
},
};
counter.add();
counter.add();
console.log(counter.count); // 2例題。本の記録 { title: "Notes", pages: 120, read: 45 } は、Math.round(book.read / book.pages * 100) で進み具合を表せます。答えは 38 で、38 パーセントという意味です。値に pages や read という名前をつけておけば、b[1] / b[0] では決してできないほど式が読みやすくなります。
配列か、オブジェクトか
どちらを使うかは、簡単な見分け方で決まります。クラスの得点やレシピの手順のように、値が同じ種類のもので順番が大切なら、配列を使って位置で取り出します。商品の名前、価格、在庫のように、値が一つのものについての別々の事実なら、オブジェクトを使って名前で取り出します。実際のデータの多くは二つを組み合わせたもので、商品の配列の中で、それぞれの商品がオブジェクトになっています。練習ボックスでオブジェクトを表示すると、{"name":"Coco","age":3} のようなつめた形で表示されます。プロパティを一つずつ読むほうが、すっきりした出力になります。
| オブジェクト | { } にまとめた名前つきの値の集まり |
| プロパティ | オブジェクトの中の key: value の組一つ |
| キー | age のような、プロパティの名前 |
| ドット記法 | pet.name |
| ブラケット記法 | pet["name"] または pet[field] |
| メソッド | 値が関数であるプロパティ |
| this | メソッドの中では、そのメソッドを呼び出したオブジェクト |
| Object.keys | オブジェクトのキーの配列 |
- 何が表示されますか?
const car = { brand: "Kia", year: 2020 }; console.log(car.year); - 何が表示されますか?
const car = { brand: "Kia", year: 2020 }; console.log(car["brand"]); - 何が表示されますか?
const car = { brand: "Kia" }; console.log(typeof car.color);- undefined
- エラーになる
- string
- 何が表示されますか?
const box = { w: 4, h: 5 }; box.w = 6; console.log(box.w * box.h); - 何が表示されますか?
const p = { name: "Lee" }; p.age = 40; console.log(Object.keys(p).length); - 何が表示されますか?
const field = "score"; const r = { score: 88 }; console.log(r[field]); - 何が表示されますか?
const u = { name: "Ana", tags: ["admin", "editor"] }; console.log(u.tags[1]); - 何が表示されますか?
const items = [{ n: 2 }, { n: 5 }, { n: 1 }]; let t = 0; for (const it of items) { t += it.n; } console.log(t); - 何が表示されますか?
const c = { count: 5, add() { this.count++; }, }; c.add(); console.log(c.count); - オブジェクト item に、値が 9 の price というプロパティを加える行はどれですか?
item.price = 9;item = price: 9;item.push(price, 9);
- オブジェクトは { } の中に key: value のプロパティを持つ。
- obj.key または obj["key"] で読む。キーが変数に入っているときは角かっこ。
- 代入するとプロパティを変えたり加えたりできる。ないキーは undefined として読まれる。
- オブジェクトの配列で記録を持つ。ループで回してそれぞれのプロパティを読む。
- メソッドは値が関数のプロパティ。this はそのオブジェクト。
このコースの出典 (2)
- MDN Web Docs, JavaScript Guide (developer.mozilla.org/en-US/docs/Web/JavaScript/Guide, chapters Introduction, Grammar and types, Control flow, Loops and iteration, Functions, Expressions and operators, Numbers and strings, Indexed collections, Working with objects; checked 2026-10-17)
- Ecma International, ECMA-262 ECMAScript 2026 Language Specification, 17th edition, June 2026 (tc39.es/ecma262 and ecma-international.org/publications-and-standards/standards/ecma-262, checked 2026-10-17)
確認日: 2026-10-17