JavaScriptでオブジェクト指向をするには

まず、ツール。javascript開発、必須のツール。FireBugここからゲット。対話式にJavaScriptがテストできる。

以下は、参考サイトの勉強メモ。
さて、JavaScriptで次のような書き方ができる。
var objf = function(x){ return x * 2}
関数リテラル(無名の関数を代入)という。

このようにJavaScriptでは、リテラル以外はオブジェクトであり、オブジェクトとは「プロパティ名とそれに対応づけられた値のペアのリスト」とする。
JavaScriptでのオブジェクト定義はJSON(JavaScript Object Notation)という表記法によって表現することができる。こんな感じ、(連想配列と一緒)

var Car = {‘maker’:’Toyota’, ‘model’:’carora’, ‘run’:function(){alert(‘burrrooon!’)} }

オブジェクトをさらにオブジェクトから呼ぶこともできる。

var Garage = {‘number’:’7′, ‘myCar’:Car}

Garage.myCar.run()

オブジェクトを消すにはdeleteステートメントを使う。
delete Garage.myCar.run

新しいオブジェクトは、「既に存在しているオブジェクトのプロトタイプ」をベースにする。この点が、JavaScriptが「プロトタイプベース言語」と呼ばれる。

var Car = function(model){this.model = model;} ;
これはクラをコンストラクタ付きで、定義している。プロパティ変数はthis.をつけることで参照できる。

Car.prototype = {‘model’:’noname’, ‘run’: function(){ alert(‘garuuuun’);} };
このprototypeにより、新しくプロパティの初期値をセットしている。

定義されたオブジェクトを作るには
var carora = new Car(‘carora’);

prototypeプロパティをセットした後、そのクラスをnewするとプロパティを含んだオブジェクトができる。
つまり、クラスを継承しているわけですね。この継承は延々とさかのぼることができる。(プロトタイプチェーン)

var Mammal = function(){};
Mammal.prototype = {‘name’:’noname’, ‘bark’: function( alert(‘—–‘);}};

var Dog = function(){};
Dog.prototype = new Mammal();

var Chiwawa = function(){ this.name = “chiwawa”;}
Chiwawa.prototype.bark = function(){alert(‘Can Can’);}
var mypet = new Chiwawa();

delete mypet.bark

これをふまえて、Prototype.jsパッケージを見てみよう。

コメント