TOPシステム開発> コンストラクタ




まるごとJavaScript&Ajax!
JavaScriptを洗練させるPrototype.js

第2回:JavaScriptの復習
著者:ガイアックス  天野 仁史   2007/2/26
前のページ  1  2
コンストラクタ

   関数オブジェクトをnewするとオブジェクトができるといいましたが、このような使われかたをする関数オブジェクトのことを「コンストラクタ」と呼びます。コンストラクタはnewされると、新しいオブジェクトを生成しそれをthisとしてコンストラクタの処理を呼び出します。

リスト7の例を見てください。
リスト7:コンストラクタによる初期化
var Human = function(name) {
   this.name = name;
   this.sayMyName = function() {
      alert(this.name);
   };
};

var amachang = new Human(' 天野');
alert(amachang.name); // 天野と表示
amachang.sayMyName(); // 天野と表示

   Humanコンストラクタをnew演算することによって、新しくオブジェクトが生成されて初期化されたのが分かります。コンストラクタに初期化処理を記述することによって、そのままオブジェクトを作るより複雑な初期化を行うことができます。


プロトタイプ

   コンストラクタを用いることで、複雑な初期化ができると紹介しました。しかし、コンストラクタは処理だけでオブジェクトを組立てるため、作られるオブジェクトの全貌がソースコードから見渡しにくくなってしまいます。そこで、JavaScriptではもうひとつのオブジェクト初期化方法を用意しています。それが、プロトタイプです。

プロトタイプとはオブジェクトの雛型となるオブジェクトのことで、コンストラクタが呼び出される前にあらかじめプロパティを与えることができます。

プロトタイプの定義方法は簡単で、コンストラクタのprototypeプロパティにオブジェクトを格納しておくだけです。格納されたオブジェクトがそのクラスのプロトタイプになります。例えばリスト7の例を、プロトタイプを使ってリスト8のように書くことができます。

リスト8:プロトタイプによる初期化
var Human = function(name) {
   this.name = name;
};

Human.prototype = {
   sayMyName: function() {
      alert(this.name);
   }
};

var amachang = new Human('天野');

ここではこれ以上説明しませんが、実はこのプロトタイプという概念は、もっと深く非常に面白い概念です。興味があるかたは、「プロトタイプチェーン」というものを勉強してみてください。きっとプログラミング言語の知識の幅が、更に広がることでしょう。


次回の内容

   次回は、本題のPrototype.jsを実際に使っていきます。

前のページ  1  2

株式会社ガイアックス 天野 仁史
著者プロフィール
株式会社ガイアックス   天野 仁史
渋谷で働くWebプログラマ。出身は石川県金沢市。21歳でプログラミングに出会い、IT戦士になることを決意。それからというもの、寝ても覚めてもプログラムを書き続け今に至る。はてなでamachangというidでブログを書いてます。

IT戦記
http://d.hatena.ne.jp/amachang/


INDEX
第2回:JavaScriptの復習
  JavaScriptについて再認識
コンストラクタ