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やら文字列を返しても問題がないのに、オブジェクトを返すとこける。なじぇ?