|
||||||||||||||||
| 1 2 次のページ | ||||||||||||||||
| JavaScriptについて再認識 | ||||||||||||||||
|
前回はJavaScriptの「プロパティ」「空のオブジェクト」「オブジェクト」について復習しました。引き続き「関数オブジェクト」「クラス」「空のクラス」「コンストラクタ」「プロトタイプ」について解説していきます。 |
||||||||||||||||
| 関数オブジェクト | ||||||||||||||||
|
JavaScriptでは関数も関数オブジェクトというオブジェクトです。関数オブジェクト自体をプロパティに代入することも可能ですし、関数オブジェクト自体がプロパティを持つことも可能です。 実際に、リスト3のsayMyNameに格納されているものが、関数オブジェクトです。このように、オブジェクトのプロパティに格納された関数オブジェクトのことをメソッドと呼びます。 リスト3:プロパティを定義(再掲)
var amachang = {
関数オブジェクト自体の概念はそこまで難しくないとは思いますが、関数オブジェクトはオブジェクト指向を成立させるための特殊な仕組みを持っています。それは、関数内部からアクセスできるthisという変数です。thisは関数オブジェクトを呼び出したときにその関数オブジェクトを格納していたオブジェクトを指しているのです。 リスト5の例を見てください。 リスト5:オブジェクトによりthisが変わる
var amachang = {
amachangとpersonのsayMyNameメソッドは同じオブジェクトであるにもかかわらず、呼び出した結果が異なっていることが分かります。1と2ではメソッドを呼び出したオブジェクトが違うため、thisの値が変わったのです。 また、メソッドではない関数オブジェクトが呼び出された場合、グローバルオブジェクトという特殊なオブジェクトがthisになります。 |
||||||||||||||||
| クラス | ||||||||||||||||
|
前項でも述べたようにJavaScriptではクラスが無くてもオブジェクトを生成できます。では、JavaScriptにはクラスいう概念は存在しないのでしょうか。それは、YESともNOともいうことができます。たしかに、JavaScriptには他のオブジェクト指向言語のようなクラスはありません。しかし、意味的にクラスと呼ばれる"もの"はあります。 ここでは、そのJavaScriptのクラスと呼ばれる"もの"について紹介します。 |
||||||||||||||||
| 空のクラス | ||||||||||||||||
|
まずは、一番シンプルな空っぽのクラスを定義してみましょう。リスト6の例を見てください。 リスト6:空のクラスを定義
var Klass = function() {};
「え?」と思う方も多いのではないでしょうか。これはどう見てもただの関数オブジェクトです。そう、そのとおりです。JavaScriptでは、関数オブジェクトがクラスなのです。そして、関数オブジェクトに対してnew演算を行うと初期化されたオブジェクトが生成されるという仕組みになっているのです。 JavaScriptでは言語構造的にクラスという特別なものを持っているわけではなく、関数オブジェクトにクラスという意味的な役割を持たせているということなのです。 |
||||||||||||||||
|
1 2 次のページ |
||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||

