質問: this.listener.length; for(var i=0;i
回答: 大きめの書店へ行って、javaScriptの棚 (その店はある棚一本が丸々javaScript関係でした) に並んでいる本をぱらぱら見てみたところ、Observerパターンを取り上げているものは結構ありました。ただ、デザインパターンのうちこのパターンのみしか取り上げてないものがけっこうあり、そういうのは説明があやしいものが多かったです (たとえば「ObserverパターンはSubscriber-publisherパターンを用いて実装されることが多いが云々」......どっちも同しやろが!!)。また、MVCモデルとの関係を述べたものはあまりなかったです。 質問者さんが読んだという本は実見していませんが、そういう手短かな、結果として意味不明な解説になっているものではないかと思います。実際、ご質問に挙げられているコードは、GoFの本[1]の説明でのObserverパターンに現れる2つの抽象クラスと2つの具象クラス (したがって2つ以上のインスタンス) のうち、Subjectクラスの実装にあたる部分にすぎません。また同書では、同じ効果をObserverクラスでの実装でも、なにかグローバルなテーブルのようなものでの実装でも実現できる、ということも示唆しています。 そういうわけで、`Observer`なる「クラス」を作って「これがオブザーバーだ」と説明しても、読む人に意味がわからないのは当然だと思います。 質問者さんの読んだ本は役に立たない、と言いたいわけではないです。「デザインパターン」というキーワードを知る機会を与えてくれたのですから。深く知りたければほかの本も探して読めばいいです (というか、その本には参考図書の紹介などはないんでしょうか)。 また、デザインパターンは観念論ではなく、実際のコーディングや開発プロセスに役立てることを目的としているので、コードを書くことで理解しやすくなると思います。日々コードを書く中で、デザインパターンを意識してみられるといいと思います。 以上、質問者さんが知りたかったことが何なのかよくわかっていないのですが、なにか参考にでもなれば。 [1] 回答中の「GoFの本」とは次の書籍のことを指して言っています。 * エリック・ガンマ他 (1999). 『オブジェクト指向における再利用のためのデザインパターン』改訂版. ソフトバンククリエイティブ. 為念。これを読めということではないです。