【JS】単純なクラスの実装

| | Comments (0) | TrackBacks (0)
ずいぶんとブログを更新してなかった。。
職場も変わってから半年以上経過しました。。
以前はFlashどっぷりでしたが、最近はJSどっぷりです。
というわけで、JSネタ。

JSのクラス風実装っていくらでもあるし、ライブラリも沢山あるけど、
プライベートメソッド、パブリックメソッド、プライベート変数とかを含んだ物をさくっと実装したいよって時の解決法。
ちなみに継承は考えてません。
そういう複雑なOOPを実装するのであれば、def.jsとか使えばいいと思う。


var ClassA = function(){
    this.initialize.apply(this, arguments);
}
ClassA.prototype = (function(){
    //静的プライベート変数の定義
    var _propA = 0,
          _propB = "B";

    function initialize(prop){
        console.log(prop);
    }

    function _methodA(){
        console.log("private methodA");
    }

    function methodB(){
        console.log("public methodB");
    }

    //publicメソッドにしたい物だけオブジェクトとしてリターン
    //リターンするオブジェクトに含まれない関数はプライベートメソッドになる
    return {
        initialize : initialize,
        methodB : methodB
    };
}());
いままでprototypeに直接オブジェクト突っ込んだりしてたけど、即時関数でくるめばスコープ持てるから静的プライベート変数定義できるじゃん!ってだけの話です。
this._methodAとかでプライベートメソッドを呼び出すことはできません。
ちなみにこのプライベート変数は静的変数なので、インスタンス間で共有されるのでご注意を

0 TrackBacks

Listed below are links to blogs that reference this entry: 【JS】単純なクラスの実装.

TrackBack URL for this entry: http://blog.chikathreesix.com/mt/mt-tb.cgi/40

Leave a comment

Archives