JavaScriptでクラス

| コメント(2) | トラックバック(0)

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

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オブジェクトについて書いてあるページ

トラックバック(0)

トラックバックURL: http://www.kazu.tv/blog-mgr/mt-tb.cgi/603

コメント(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について(ライブラリではなく)知ると、色々わかると思います。
ではー。

こんにちは。コメントありがとうございます。

自分は基本的なやり方も多分理解してるとは思うのですが、継承を使う必要があるような場面に今まであまり出会った事がないので継承は使っていません。

prototype.js, MochiKitも使った事あるのですが、その辺りのクラス関係の機能は使ってないです。

> 以下の書き方は、副作用があるので避けたほうがよいです。
> SubClass.prototype = new BaseClass();

ここの意味がよく分からなかったのですが、どういう事でしょうか?

あと、メソッド定義でprototypeを使わなきゃいい理由って何かありますか?あまり必要性を感じてないので使ってないのですが、何か副作用があるようなら考慮する必要があるかなぁと思ってます。

コメントする

このブログの作者

名前:kazu
仕事:IT関係の何でも屋
メール:kazu 後幕 kazu どと tv
詳しくはこの辺

このブログ記事について

このページは、kazuが2006年8月14日 22:45に書いたブログ記事です。

ひとつ前のブログ記事は「MySQL、リストア時の問題」です。

次のブログ記事は「靖国参拝関連ニュース(韓国編)」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ