クラス、どうしたもんだべさ?
いわゆる「抽象データ型」的なOOPとしてのクラスとかって、皆さん、どんな風に書いてるんだべさ?
利点欠点込み込みで、話が聞けると嬉しいなぁ。
ってのを前提に、とりあえず「一端」書いたソース。
// 全体的に使おうと思う共通。…どっかfileに切り出してincludeだよねぇ function object(o) { var F = function() {}; F.prototype = new o; return new F(); } // 基底クラス:プロパティ //var base_obj = function() { function base_obj() { this._x = 0; this._y = 1; }; // 基底クラス:メソッド base_obj.prototype = { get_x: function() { return this._x; }, set_x: function(i) { this._x = i; }, get_y: function() { return this._y; }, set_y: function(i) { this._y = i; } }; /* var obj = new base_obj(); alert('x is ' + obj.get_x() ); alert('y is ' + obj.get_y() ); */ // 敵クラス extends 基底クラス:プロパティ //var enemy_obj = function() { function enemy_obj() { this._name = 'enemy'; }; //enemy_obj.prototype = new base_obj(); enemy_obj.prototype = object(base_obj); // 敵クラス extends 基底クラス:メソッド enemy_obj.prototype.get_name = function() { return this._name; }; enemy_obj.prototype.set_name = function(s) { this._name = s; }; //var obj = new enemy_obj(); var obj = object(enemy_obj); //alert(obj); //alert(typeof obj); alert('x is ' + obj.get_x() ); alert('y is ' + obj.get_y() ); alert('name is ' + obj.get_name() );
さらして、反応を興味津々で待ち受けてみるなど。
…継承で、いわゆる「parent::メソッド()」って、このパターンだとどやって実装するんだべさ?