目次
JavaScriptの勉強をしていて、説明の順番を変えた方がいいかも?と思われる箇所がありました。
→「オブジェクト」という仕組みと、その用語についてです。
windowやdocumentなど、すべてのオブジェクトは、メソッド以外に「プロパティ」を持っています。
オブジェクトのプロパティとは、そのオブジェクトの状態を表すものです。
「オブジェクト」「プロパティー」「メソッド」…英語の専門用語がいきなりたくさん出てくると、訳が分からなくなるかも!?
JavaScriptの教材を作る場合、
- 先に、データ構造(変数、定数、配列など)の話を出す。
- 次に、オブジェクトの話を出す。
という順番が分かりやすいのではないか?と思いました。
(まあ、人それぞれだと思いますが…。)
オブジェクト指向プログラミングの仕組みと用語
「プロパティ」や「メソッド」という仕組み、用語は、オブジェクト指向プログラミングの一般的な内容です。
オブジェクト指向プログラミングの説明を抜きにして、この部分だけ抜き出して、いきなり説明されると、ちょっと分かりづらいかんじもあるでしょうか?
→分かりやすい説明がないか?ググってみました。
オブジェクト指向 プロパティ メソッド メンバー – Google 検索
「データと操作(メソッド)をまとめて1つのオブジェクトとして捉える」 ということは共通している。
オブジェクト指向ではオブジェクトを基本単位として考え、 1つのオブジェクトの中には、データとメソッドが備わっているとする。
なお、データとメソッドの個数はそれぞれ自由であり、 データのないオブジェクトやメソッドのないオブジェクト(C言語でいう構造体、Pascalでいうレコード型)を作ることが可能である。
JavaScript学習 準備編 – JavaScript勉強会
●データと処理
プログラムは、
・データ
・処理(計算)
という2つの構成要素から成り立っています。
プログラム → 「データ」+「処理」
ざっくり言うと、
データと処理をまとめて束にしたもの
が「オブジェクト」です。(上記の図を参照)
- データ → オブジェクトの「状態」を表し、「プロパティ」と呼ばれる。
- 処理 → オブジェクトの「操作」を表し、「メソッド」と呼ばれる。
もともとは、C言語の「構造体」という仕組みを改造して作られたのが、「オブジェクト」です。
(参考)
C言語での構造体とは、ひとつの名前でまとめられた、いくつかの異なった型の変数の集まりです。異なった型を格納できる点が配列と異なっています。
構造体の中で命名された変数はメンバと呼ばれます。そして、このメンバは通常互いに関連のあるものになります。例えば、人に関する構造体なら、氏名、年齢、性別、身長、体重などがメンバとなるでしょう。このように関連のある属性をひとつの単位として扱え、組織化できるところが構造体の利点です。
C言語プログラミング入門 – 異なる型名データをまとめて取り扱う構造体(1/2)
「データ」の束(構造体)に、「処理」(メソッド)も入れられるように改造したのがオブジェクトです。
- メンバーがデータだけ → 構造体
- メンバーがデータと処理 → オブジェクト
オブジェクトとクロージャーの違い
いろんなJavaScriptの本を読み比べてみると、関数の説明辺りで「クロージャ―」という仕組みの話が出てきます。
「オブジェクト」と「クロージャ―」を対比すると、
- 「データ」(状態)に「処理」(操作)を付けたものがオブジェクト
- 「処理」(操作)に「データ」(状態)を付けたものがクロージャ―
となります。
クロージャはプログラム内で環境を共有するための仕組みである。
クロージャ―は、実際にサンプルコードを動かしてみないと、仕組みが分かりづらいので、もう少し後で詳しく見てみたいと思います。
まとめ
プログラミングの話には、英語由来の専門用語がたくさん出てきます。
- オブジェクト
- プロパティー
- メソッド
という用語、仕組みについては、JavaScriptのデータ構造(変数、定数、配列など)の仕組みを理解してから、もう一度見直してみたいと思います。
クロージャ―は、込み入った処理をしなければ、出番はないと思います。
[amazonjs asin=”4797383585″ locale=”JP” title=”確かな力が身につくJavaScript「超」入門 (確かな力が身につく「超」入門シリーズ)”]
投稿日:March 29th 2017