わんくまでは珍しいJavaを中心とした日記です
JavaScriptでの継承方法。たまに忘れるのでメモ。
//クラスを作るオブジェクト(prototype.jsのパクリっぽい) var Class = { create : function(){ //コンストラクタ var result = function(){ //init関数へ委譲 this.init.apply(this, arguments); }; //継承する機能を追加 result.extend = function(cls){ //ここでプロトタイプチェーンを利用した継承 this.prototype = new cls; return this; }; return result; } }; //取り合えずHogeクラスを作る var Hoge = Class.create(); //メンバを実装 Hoge.prototype = { _i : 0, _j : 0, getI : function(){ return this._i; }, getJ : function(){ return this._j; }, init : function(i,j){ this._i = i || 0; this._j = j || 0; }, plus : function(){ return this.getI() + this.getJ(); } }; //インスタンスを生成 var hoge = new Hoge(10,20); //30が表示される alert(hoge.plus()); //Hogeを継承したクラスを生成 var Fuga = Class.create().extend(Hoge); //getIをオーバーライド Fuga.prototype.getI = function(){ return this._i * 10; }; //Fugaのインスタンスを生成 var fuga = new Fuga(10,20); //120が表示される alert(fuga.plus());
投稿日時 : 2007年5月2日 1:09
そうそう JavaScript だとわかりにくいのですよね。 型でどうこうではなくてインスタンスありきですし、実行時に動的にやっている感のあるソースになります。 コンパイル言語でなくともこのあたりは構文レベルのサポートが欲しいですね。
re: Visual Basic で○○を作ってみよう。その4。 - 基本クラスとか派生クラスとかつくってみたらええやん。-
Powered by: Copyright © かつのり