オブジェクト指向 JavaScript がすべての問題の解決策になるとは限りません。
私のアドバイスは、このトピックの選択には注意することです。
実際には、OO-JS は、従来のオブジェクト指向言語に近づけるために、コードをより複雑にする可能性があります。ご存じのとおり、JS はユニークです。
コードを構造化し、実装を軽量かつ柔軟に保つデザイン パターンがあることを知っておくことが重要です。
オブジェクト指向ではなく、高度な JS 実装を構築しているのはデザインパターンです。Axel Rauchmeyer の言葉を言い換えると、「オブジェクト指向の方法論は、基本的な JavaScript 構文には適合しません。それはねじれ歪んだ実装であり、JS はそれがなければはるかに表現力豊かです。」
この分析の根底にあるのは、JS にはクラスがないという事実です。本質的には、すべてがオブジェクトであるため、オブジェクト指向の変数と関数が既に存在します。したがって、この問題は、コンパイル済み言語 (C/Java) で見られる問題とは少し異なります。
JavaScript にはどのようなデザイン パターンがありますか?
Addy O' Somani と Essential Design Patterns は、チェックすべき優れたリソースです。
彼は JavaScript のデザイン パターンに関する本を書きました。
しかし、もっと...もっとたくさんあります。
A. require.js - 非常に印象的な方法で JS コードのモジュールをロードする方法があります。これらは一般にモジュール ローダーと呼ばれ、実行時のパフォーマンスを最適化するため、将来の js ファイルのロードと広く考えられています。yepnope などが存在します。複数の js ファイルをロードする場合は、この点に注意してください。(リクエストによりトップに移動しました)。
B. MVC - コードの構造化に役立つ Model View Controller フレームワークが多数あります。これはパターンですが、あなたの目的には不合理かもしれません。あなたはバックボーン、ノックアウト、アンギュラーについて言及しました... はい。これらはあなたのためにトリックを行うことができますが、1)学習曲線が高く、2)環境にとってやり過ぎである可能性があることを懸念しています.
C. 名前空間またはモジュール パターン。おそらくあなたのニーズにとって最も重要です。
グローバル変数を解決するには、それらを名前空間にラップして参照するだけです。これらは、モジュール ローダーを生成する非常に優れたパターンです。
D. クロージャー - OO JS について言及されました。これの便利な部分は、クロージャーの概念であり、プライベートメンバーを提供します。最初はこれは不可解なアイデアですが、パターンを認識した後は、些細な練習になります。
E. カスタム イベント - オブジェクト間でハード参照を使用しないことが非常に重要になります。例:AnotherObject.member;
これは、2 つのオブジェクトが緊密に結合され、両方が柔軟に変更できなくなるためです。これを解決するには、イベントをトリガーしてリッスンします。従来のデザイン パターンでは、これはオブザーバーです。JS では PubSub と呼ばれます。
F. コールバック - コールバック パターンは AJAX を有効にしたものであり、非ブロッキング io と呼ばれるものにより、Window 8、Firefox OS、および Node.js の観点から開発に革命をもたらしています。非常に重要です。
恐れることはありません。これは、長期的で高度な JavaScript 実装の方向性です。
パターンを認識したら、そこから坂を下ります。
お役に立てれば。