3.11 アイテムの価格と在庫を表示する 《オブジェクト》 【JavaScript超入門】
JavaScriptの学習メモ。
今日は『確かな力が身につくJavaScript「超」入門』の第3章を読んでみます。
3.11 オブジェクト
(p.135)
配列に続いて新しいデータの種類「オブジェクト」を紹介します。
「オブジェクトって、windowとかdocumentとか、いままで見てきたオブジェクトのこと?」
そう、同じです……基本的には。
ただ、ここでは複数のデータをまとめて1つの変数で管理するためにオブジェクトを使用します。
複数のデータを1つにまとめるという点で、前節の配列と今回のオブジェクトは似ていますが、もちろん違うところもあります。
サンプルを作りながら、オブジェクトというデータの特性や配列との違いを体感しましょう。
サンプルコード
「index.html」というファイルを作り、以下の内容を書きます。
実行結果
「index.html」をChromeで開きます。
以下のような実行結果になりました。
オブジェクトのプロパティーから値が取り出されて、使われていることが確認できました。
オブジェクト
JavaScriptのオブジェクトって、他のプログラミング言語でいうところの「連想配列」と似てますね?
連想配列とは?
連想配列(れんそうはいれつ、associative array)とは、コンピュータプログラミングにおいて、添え字にスカラー数値以外のデータ型(文字列型等)も使用できる配列である。
抽象データ型のひとつ。
連想リスト、連想コンテナ、辞書(ディクショナリ dictionary)、ハッシュ(hash)、マップ(map)とも呼ばれる。
連想配列では、要素とそれを紐付けできるような値(キーと呼ぶ)のペアで表され、キーによって目的の値を求める。
辞書やディクショナリという呼び方は、要素を本文、キーを見出しになぞらえたものと言える。
- 配列の要素の位置は、数字の添え字で指定しました。(インデックス番号)
- 連想配列の要素の位置は、文字の添え字で指定します。(キー名)
JavaScriptのオブジェクトは連想配列?
javascript オブジェクト 連想配列 - Google 検索
JavaScript におけるオブジェクトはプロパティの集まりからなり、またそのプロパティは名前(あるいはキー)と値との関連付けから成り立っています。
プロパティの値を関数にすることもでき、これはいわゆるオブジェクトのメソッドとなります。
Javascriptメモ:連想配列とオブジェクト - Qiita
どうやら連想配列はオブジェクトの一種だと考えていいみたい。
連想配列(重要)
連想配列と言えば、
こんな感じで記述できるのが連想配列です。
さて、この連想配列はArray型?Object型?
実はArray型で宣言してもエラーが出るわけではないので気づきにくいですが、Object型が正解です。
というよりもそもそも連想配列なんてものはJavascriptには存在しません。
上記の例を別の記述に変えると分かりやすいですが、
となります。
もうそのままObject型ですね。
とはいえ、利便性のため、「Ajax専」では
object[name]のような記述は連想配列と呼びます。
ドット演算子とは?
メンバー演算子は、ドット表記法またはブラケット表記法を使用してオブジェクトのプロパティにアクセスする方法を提供します。
(ドット表記法で)オブジェクトとプロパティーをつないでいるドット(点)「.」が、「ドット演算子」です。
この点(ドット)を指すとき、何かしら呼び名がないと、会話で説明しづらいので、「ドット演算子」という名前が付けられたんでしょうか?
- 連想配列では、キー(プロパティー名に相当)をブラケット[]で囲みますが、
- オブジェクトでは、プロパティー名をドット.でつなぎます。
オブジェクトはドットで書けるので、ちょっとだけ文字数が節約できますw
オブジェクトの作り方
書式:プロパティー数が0個(空)のオブジェクトを作成して変数に保存する
書式:プロパティーが1個以上あるオブジェクトを作成する
オブジェクトを構成する要素の名称
- プロパティー: title: 'JavaScript入門'
- プロパティー名: title
- データ(値): 'JavaScript入門'
プロパティー名とデータ(値)の1組で、1つのプロパティーとなります。
書式:プロパティーの書式
オブジェクトからデータを読み取る・書き換える
書式:プロパティーのデータを読み取る
書式:プロパティーのデータを書き換える
オブジェクトのメソッド
(p.141)
今回作成したオブジェクトにはプロパティだけしかありませんが、実はプロパティのデータにはファンクションを保存しておくこともできます。
objオブジェクトを定義して、そのaddTaxプロパティのデータとしてファンクションを代入しています。
プロパティのデータがファンクションのとき、そのプロパティのことを特別に「メソッド」といいます。
つまり、皆さんもメソッドとプロパティを持つオブジェクトを作成することができます。
ただ、それを作成して使いこなすには「JavaScriptのオブジェクト指向プログラミング」という知識とテクニックが必要になってきますが、少し高度なので本書ではそこまで扱っていません。
まずは、プロパティだけを持つオブジェクトを作成し、複数のデータを1つにまとめて管理する方法を習得した後、興味のある方は「オブジェクト指向プログラミング」がどういうものか、ネットや別の書籍などで調べてみてください。
オブジェクトの練習として、2段階でやるとスムーズになりそうですね?
オブジェクトの繰り返し処理
JavaScriptのオブジェクトは、for...in文で、オブジェクトのプロパティをすべて読み取ることができます。
書式:for...in文
for..in 文は、指定したオブジェクトの列挙可能プロパティに対して、順不同で反復処理をします。
各プロパティに対して、指定された文を実行できます。
オブジェクトのイテレーター
イテレーターとは?
反復子; 繰返し子
イテレータ(Iterator)とは、プログラミング言語において配列やそれに類似するデータ構造の各要素に対する繰返し処理の抽象化である。
実際のプログラミング言語では、オブジェクトまたは文法などとして現れる。
あまり一般的ではないが反復子(はんぷくし)という訳もある。
コレクションの中の各項目を処理するのは、とても一般的な操作です。
JavaScript は簡単な for ループから map()、filter() にいたるまで、コレクションを反復処理する方法を取り揃えています。
オブジェクトのプロパティを操作するときには、for...in文だけでなく、イテレーターを使って操作することもできます。
JavaScriptの新しいバージョンであるES2015では、イテレータ―が用意されています。
map()メソッド
(オブジェクトではなく)配列の要素を全て繰り返し処理したい場合には、map()というメソッドも用意されています。
map() メソッドは、与えられた関数を配列のすべての要素に対して呼び出し、その結果からなる新しい配列を生成します。
配列やオブジェクトのように、データの束を操作するときは、繰り返しの処理を行いますね?
JavaScriptでは、繰り返しの処理にも、いろいろ便利な仕組みが用意されています。
まとめ
- JavaScriptのオブジェクトは、いわゆる「連想配列」と同じ(似ている?)
- オブジェクトのプロパティーは、キー(プロパティー名)と値(データ)のペアで1組の構造になっている
- プロパティーに関数を保存した場合、そのプロパティーは「メソッド」と呼ばれる
- 全てのプロパティーを操作(読み取り等)する場合、for...in文やイテレーターを使う
オブジェクトの使い方の練習は、本書のアドバイスだと2段階でやると良いみたいです。
データがたくさんある場合、オブジェクトを活用して、データの扱いをスッキリさせたいです。
確かな力が身につくJavaScript「超」入門 (確かな力が身につく「超」入門シリーズ)
- 作者: 狩野祐東
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2015/10/30
- メディア: 単行本
- この商品を含むブログを見る