クラス定義 ~ JavaScript によるオブジェクト指向プログラミング
オブジェクトリテラル
「クラス定義」 ということはつまり、特定のメソッドとメンバ変数を持つオブジェクトを定義することといえます。
この方法はいくつかあります。
もっとも単純な定義は、次のようにオブジェクトリテラル(Object Literal) を用いて、オブジェクトを定義することでしょう。
var person = { name: 'Ichiro', say_hello: function() { alert('Hello'); } };
こうすると次のように、say_hello メソッドを呼び出すことが可能です。
person.say_hello();
また、次のようにすることによって、上記の person を「プロトタイプ」とし、 新しいオブジェクトを生成することも可能です。
if ( typeof Object.create !== 'function' ) { Object.create = function(o) { var F = function() {}; F.prototype = o; return new F(); }; } var p = Object.create( person ); p.say_hello();
コンストラクタ
C++ 等のオブジェクト指向言語的に、 new 演算子を用いてオブジェクトを生成する場合は次のようにコンストラクタ (constructor) メソッドを定義します。
var Person = function (n){ this.name = n; }
このように定義すると、次のように Person の新しいオブジェクトを作ることが出来ます。
var p = new Person('Ichiro');
言い換えると、new 演算子を用いて function オブジェクトを呼び出すということは、 「新しいオブジェクトを生成。そのオブジェクトに元の function オブジェクトの prototype オブジェクトとのリンクを作成後、新しいオブジェクトを返すこと」 ということができます。
ではここで定義した Person にメソッドを追加してみましょう。