@@ -10,14 +10,11 @@ import ViewSource from "@site/src/components/ViewSource";
1010
1111JavaScript で扱うことのできる<Term type =" javascriptValue " >値</Term >の種類として、これまで<Term type =" javascriptNumber " >数値</Term >、<Term type =" javascriptString " >文字列</Term >、<Term type =" javascriptBoolean " >論理値</Term >を扱ってきました。<Term strong type =" javascriptObject " >オブジェクト</Term >もまた、<Term type =" javascript " >JavaScript</Term > の<Term type =" javascriptValue " >値</Term >ですが、今まで扱ってきた<Term type =" javascriptValue " >値</Term >とは少し性質が異なります。
1212
13- <Term type =" javascriptObject " >オブジェクト</Term >を用いると、これまで扱ってきたような単純な<Term type =" javascriptValue " >値</Term >を複数まとめて一つの<Term type =" javascriptValue " >値</Term >として扱うことができます。
14-
15-
16-
13+ <p ><Term type =" javascriptObject " >オブジェクト</Term >を用いると、これまで扱ってきたような単純な<Term type =" javascriptValue " >値</Term >を複数まとめて一つの<Term type =" javascriptValue " >値</Term >として扱うことができます。</p >
1714
1815## <Term type =" javascriptObject " >オブジェクト</Term >の作成
1916
20- <Term type =" javascriptObject " >オブジェクト</Term >は、複数の<Term strong type =" javascriptProperty " strong >プロパティ</Term >と呼ばれる<Term type =" javascriptValue " >値</Term >を持ちます。<Term type =" javascriptProperty " >プロパティ</Term >にはそれぞれ名前がついています。<Term type =" javascriptProperty " >プロパティ</Term >の名前には文字列しか指定できませんが、<Term type =" javascriptProperty " >プロパティ</Term >の<Term type =" javascriptValue " >値</Term >としては <Term type =" javascript " >JavaScript</Term > で使用できるすべての<Term type =" javascriptValue " >値</Term >が使用可能です。
17+ <p >< Term type =" javascriptObject " >オブジェクト</Term >は、複数の<Term strong type =" javascriptProperty " strong >プロパティ</Term >と呼ばれる<Term type =" javascriptValue " >値</Term >を持ちます。<Term type =" javascriptProperty " >プロパティ</Term >にはそれぞれ名前がついています。<Term type =" javascriptProperty " >プロパティ</Term >の名前には文字列しか指定できませんが、<Term type =" javascriptProperty " >プロパティ</Term >の<Term type =" javascriptValue " >値</Term >としては <Term type =" javascript " >JavaScript</Term > で使用できるすべての<Term type =" javascriptValue " >値</Term >が使用可能です。</ p >
2118
2219``` javascript
2320const person = { name: " 田中" , age: 18 };
@@ -74,6 +71,35 @@ document.write(person.favoriteFood);
7471
7572:::
7673
74+ ## 配列とオブジェクト
75+
76+ 上で説明したように、配列はプリミティブではないのでオブジェクトの一種です。JavaScript のオブジェクトとは、プロパティ名とプロパティ値の組み合わせでした。
77+
78+ 配列もこの原則に従って動作しています。次の図に示すように、配列とは、各要素のインデックスがプロパティ名になっているオブジェクトだと考えることができるのです。
79+
80+ ![ 配列のプロパティ] ( ./array-properties.png )
81+
82+ 逆に、オブジェクトも配列と同じように使用することができます。この記法を** ブラケット記法** と呼び、プログラムの動作に応じて使用したいプロパティを切り替えるのに役立ちます。
83+
84+ ``` javascript
85+ const subject = " math" ; // ここを変えると表示される教科が変わる
86+ const scores = { math: 90 , science: 80 };
87+ document .write (` ${ subject} の点数は ${ scores[subject]} です。` ); // math の点数は 90 です。
88+ ```
89+
90+ :::tip オブジェクトのプロパティ名
91+
92+ オブジェクトのプロパティ名に数値は使用できません。それではなぜ、配列の場合は ` studentNames[2] ` のように記述できるのでしょうか。
93+
94+ 答えは単純で、文字列に変換されているからです。このため、次のプログラムは全く問題なく動作します。
95+
96+ ``` javascript
97+ const studentNames = [" 田中" , " 佐藤" , " 鈴木" ];
98+ document .write (studentNames[" 0" ]); // 田中
99+ ```
100+
101+ :::
102+
77103## 課題
78104
79105### 初級課題
@@ -106,7 +132,6 @@ document.write(tanaka.scores.japanese);
106132
107133<ViewSource url ={import.meta.url} path =" _samples/editAndViewJapaneseScore " />
108134
109-
1101352はプロパティの追加を利用しています。
111136
112137</Answer >
@@ -142,4 +167,4 @@ document.write(nextYearTanaka.age);
142167
143168<ViewSource url ={import.meta.url} path =" _samples/incrementAge " />
144169
145- </Answer >
170+ </Answer >
0 commit comments