prototype.jsでクラス定義
30分プログラム、その125。prototype.js風のクラス定義を勉強してみる。
Hoge = Class.create(); Hoge.prototype = { initialize: function(){ // ... }, f: function(){ // ... }, g: function(){ // ... } };
といった書き方ができる。
普通の
function Hoge(){ // ... } Hoge.prototype.f = function(){ // ... } Hoge.prototype.g = function(){ // ... }
よりも、クラスごとにネストされているのが素敵だと思う。
使い方
$ js proto.js * Counter inc 2 times Before: 0 After: 2 --- * BigCounter inc 2 times Before: 0 After: 20 ---
ソースコード
// include document = { evaluate:null }; window = {}; navigator = { appVersion:'' }; load('js/prototype.js'); // main // prototype.js風クラス定義 Counter = Class.create(); Counter.prototype = { initialize: function(){ this.current = 0; }, inc: function(){ this.current ++; }, dec: function(){ this.current --; } }; // 継承 BigCounter = Class.create(); Object.extend(BigCounter.prototype, Counter.prototype); Object.extend(BigCounter.prototype, { inc:function(){ this.current += 10; } }); // テスト function f(c,n){ var n = n || 3; print('inc '+n+' times'); print('Before: ' + c.current); (n).times(c.inc.bind(c)); print('After: ' + c.current); print('---'); } print('* Counter'); f(new Counter,2); print('* BigCounter'); f(new BigCounter,2)