かしこくもなりたいし、女の子にもなりたかった。

とってもガーリーなゆるふわ愛され何でも屋を目指す、30代男性がお送りするファビュラスなブログ。

Prototypeとモジュールパターン的なサムシング

実のところ未だに分かってるのかどうか自分でも怪しいprototypeのお話。 自分の理解を深める旅です。

理解の整理も兼ねてモジュールパターンで書いたコードを置き換えてみた。こういう感じね。

var foo = function(arg){
    this.props={
        prop1:arg
    };
};

foo.prototype.shout = function(){
    console.log(this.props.prop1)
}

var bar = new foo("test");

ちなみにモジュールパターンだと

var foo =  function(arg){
    var props = {
        prop1:arg
    }

    return {
        shout:function(){
            console.log(props.prop1.arg)    
        }
    };
}

こうなる。

個人的にモジュールパターンは親のfunction内に一通り書き切れるのでコードの見た目的にも好きなんですが、言ってしまえば同じ処理を複製してる訳なので、prototypeベースのが合理的ですわね。例えばこれがアニメーションを行う処理なら、デュレーション値をグローバル変数で持たせるなんて不細工なことしなくてもprototypeの下に持たせればいいわけだね。なんとなく分かったぜ、沖縄の師匠!

今日も良い勉強になりましたね。

※追記
実はprototypeで書いた方にreturnを書いた時の挙動がイマイチ理解できてない。falseやらtrueやら文字列を返しても問題がないのに、オブジェクトを返すとこける。なじぇ?