- 2009-11-26 (木)
- 技術
結構前にJohn Resig氏がJohn Resig - Simple "Class" Instantiationでnewしてもしなくてもよいclassを作るmakeClassというメソッドをブログに載せていました。
ここ最近はprototype.jsを使わずにJavaScriptをコーディングする機会が増えてきたので、Class.create()の変わりになるこのmakeClassを重宝しています。
んで、これを自分が使いやすいように、改良して使っているのでそれを紹介してみます。
makeClass - before
なかなかトリッキーで面白いコードですね〜。
このnewしてもしなくても良いという部分がオモロい!
newせずに関数が呼び出された場合は、elseのほうに入って自分自身をnewしてからもう一度同じ関数を呼んでいます。
makeClass - after
では自分用にカスタマイズしたほうです。
対して変わってはいないんですが、
まずprototype.js - 1.6のClass.create()では、引数にprototypeに追加してほしいObjectを渡すことができましたので、
それと同じようにmakeClassにもpropという引数を追加。
それをreturnするfunctionのprototypeに詰めとく。
次にmakeClassをjQueryのPluginにしてしまう。
これでグローバル名前空間を汚さずに済みます。
あとbeforeのほうの以下の部分ですが、この書き方だとクラスをnewする際に引数を渡さないとargsがundefinedになってしまい、そのcalleeを見に行くのでエラーになってしまいます。
なので、ちょっと回りくどいですが、三項演算子でargsがあるかどうかで処理を分岐しています。
使ってみる
initメソッドはあればインスタンス生成時に実行され、なければ実行されません。
結構すっきりした感じで書けたと思います。
jQuery Pluginの制作で、要素ごとに何か情報を持たせようとした場合は、prototypeを使うので、そういった場面でmakeClassが役立ちます。
Comments:0
Trackback:0
- TrackBack URL for this entry
- http://hisasann.com/cgi-bin/mt/mt-tb.cgi/1229
- Listed below are links to weblogs that reference
- jQuery Plugin - 僕のmakeClass from HouseTect, JavaScript Blog


