コンストラクタをapplyする
新しいオブジェクトを定義するには、やり方や好みで色々ある。
■まず単純にコンストラクタ定義する方法
var Cat=funtion(name){ this.name=name; }; Cat.prototype.bark=funtion(){ alert('にゃー'); }; var mycat=new Cat('ミケ'); console.log(mycat.name, mycat.bark());
■コンストラクタに無名関数をapplyする方法
var Cat=function(){}; (function(){ this.name='ミケ'; this.bark=function(){ alert('にゃー'); }; }).apply(Cat.prototype); var mycat=new Cat(); console.log(mycat.name, mycat.bark())
■Class作成メソッドを定義する
prototype.js(今更やね)の冒頭での面白いコード。
一瞬意味が分かりにくいが、
このcreateメソッドを呼び出すと、コンストラクタ関数が返されるようになっていて、
さらには自由な初期化のためのinitializeというメソッドをapplyしている。
※"Class"なんていうオブジェクト名は便宜的なもので、javascriptにはClassの機能はない。
//これがprototype.jsに組み込まれている var Class={ create:function(){ return function(){this.initialize.apply(this,arguments)} } }; //使い方 var Cat=Class.create(); Cat.prototype={ initialize:function(name){ this.name=name; }, bark:function(){ alert('にゃー'); } }; var mycat=new Cat('ミケ'); console.log(mycat.name, mycat.bark());
Now reading
- 作者: 佐々木正人
- 出版社/メーカー: 春秋社
- 発売日: 2003/07/01
- メディア: 単行本
- 購入: 10人 クリック: 65回
- この商品を含むブログ (43件) を見る