JavaScriptでクラス


調べてみると色々なやり方があるみたいだけど、自分は以下の感じでやる事にした。

function ClassName () {
this.prop1;
this.prop2;
this.method1 = function (param) {
this.prop1 = param;
this.method2();
}
this.method2 = function (param) {
doSomething();
}
}
var obj = new ClassName();

無名関数を使ってるんだけど、これで大体の事は用が足りる。
継承のやり方にはいろいろあって、このページが詳しい。けどちょっと難しいかも。
自分の場合は継承っぽいやり方は使わず、メソッドをオーバーライドや追加したい場合は、インスタンス化した後にメソッドを書き換え・追加している。具体的には以下のような感じ。

var obj = new ClassName();
//オーバーライド
obj.method2 = function (param) {
doSomethingElse();
}
//メソッドの追加
obj.method3 = function() {
bar();
}

その他、参考にしたページ。
JavaScriptでのオブジェクト指向全般に関してさらっと書いてあるページ
Functionオブジェクトについて書いてあるページ

“JavaScriptでクラス” への2件の返信

  1. function BaseClass () {}
    BaseClass.prototype.method1 = function (param) {}
    BaseClass.prototype.method2 = function (param) {}
    クラスは上記のような書き方が基本です。
    継承は、以下のような形が一般的です。
    具体的にはPrototype.jsのextendや、MochiKitのupdateがあります。
    オブジェクトのプロパティをコピーするメソッド(SubClass.prototype, BaseClass.prototype);
    以下の書き方は、副作用があるので避けたほうがよいです。
    SubClass.prototype = new BaseClass();
    prototypeについて(ライブラリではなく)知ると、色々わかると思います。
    ではー。

  2. function BaseClass () {}
    BaseClass.prototype.method1 = function (param) {}
    BaseClass.prototype.method2 = function (param) {}
    クラスは上記のような書き方が基本です。
    継承は、以下のような形が一般的です。
    具体的にはPrototype.jsのextendや、MochiKitのupdateがあります。
    オブジェクトのプロパティをコピーするメソッド(SubClass.prototype, BaseClass.prototype);
    以下の書き方は、副作用があるので避けたほうがよいです。
    SubClass.prototype = new BaseClass();
    prototypeについて(ライブラリではなく)知ると、色々わかると思います。
    ではー。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です