問題タブ [module-pattern]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - このキーワードを使用し、モジュール パターンを明らかにする厳密な違反
以下を取得してjslint/jshintを渡すのに問題があります
関数宣言での使用が原因であることは理解していますがthis
、クロックフォードが書いたものを読んだところ、違反はグローバル変数の汚染を防ぐためのものだと彼は言いました-しかし、ここで唯一のグローバル変数は私が明示的に定義しているものです... myModule
. 他のすべては即時関数スコープに保持されthis
、モジュールを参照するために使用できるはずです。
このパターンを通過させる方法はありますか?
更新:宣言の代わりに関数式を使用すると、これは機能するようです。
私はこのフォーマットのファンではありません. 正直なところ、これが違反をスローしている理由がわかりません。このパターンには理由がありません。
javascript - jQuery / モジュール パターンでスコープを維持する際の問題
jQuery を整理するためにモジュール パターンを使い始めたところです (Christian Heilmann の元のチュートリアルのおかげです)。奇妙な問題が発生しています。次の JavaScript コードを検討してください。
これは、次の HTML に含まれて使用されています。
私が直面している問題は、#gallery1 のサムネイルをクリックすると #gallery2 の画像が入れ替わるということですが、#gallery2 は期待どおりに機能しています。$obj 変数はインスタンス間で共有されているように見えますが、スコープは関数のプライベート インスタンスに限定されたままであると思いました。
これを適切にスコープして機能させる方法についてのアドバイスは大歓迎です。
javascript - モジュールパターンを介してサブモジュールを作成する方法
JavaScriptモジュールのパターンについて読んでいました。私の質問は、それを使ってサブモジュールを作成する方法です。つまり、このクラスがあると言って、それを継承するにはどうすればよいですか。
親から継承されたプロパティを使用して子クラスを作成するにはどうすればよいですか?モジュールパターンで同じことをするにはどうすればよいですか?
object - javascriptライブラリを書く
JSライブラリを作成し、次のように処理したいと思います。
そしてもちろん、c1とc2は同じ変数を共有することはできません。私はオブジェクトでこれを行う方法を知っていると思います、それは次のようになります:
しかし、問題は、このように記述した場合、Classの複数のインスタンスを持つことができないことです。だから私は関数で同じことを達成しようとしていますが、私はそれを正しくやっていないと思います。
可能かどうかはわかりませんが、このモジュールを作成する他の方法の提案を受け入れます。関連性があるかどうかはわかりませんが、このライブラリ内でjQueryを使用しています。
javascript - 通常の無名関数として実行時に読み込まれるモジュール パターン コード
私は Javascript Module Pattern を使用しています。これにより多くの利点が得られます。実行時に以下を使用して JS ファイルをロードしています。
myFile.js の 1 行目は myModule.Loaded = {} です。これを親 (呼び出し側) スクリプトで使用して、myFile.js が確実に読み込まれるようにします。
myFile.js の最初の数行を次に示します。
しかし、何が起こるかというと、myModule.Loaded 値が未定義であるため、ファイルがまだロードされていないという印象を与えます。Firefox Firebug では、[スクリプト] タブにファイルがロードされているのを確認できますが、モジュール定義が失われ、次のようになります。
つまり、モジュール パターンを維持する代わりに、無名関数のグループになりました。どうしたの?
javascript - javascript デザイン パターン: サブモジュールを作成し、親モジュールのプライベート変数と関数にアクセスする方法
私は次のものを持っています:
サブモジュールを作成し、親モジュール mod.a からプライベート関数を呼び出したいと考えています。モジュール パターンのベスト プラクティスに従いながら、これを行うにはどうすればよいですか?
javascript - Javascriptモジュールのパターンイベントとリスナー
モジュールパターンを実装していますが、イベントリスナー/ハンドラーを定義および登録するための最良の/好ましい方法を知りたいです。以下は機能しますが、より良い/より簡単な方法があるかもしれません...
やってみよう:
myEventx、myEventHandlerx、およびaddListenerを使用するのは大変な作業のようですか?
javascript - この参照を失うことを避け、なぜそれが起こっているのか
エラーのあるこのフィドルがあります --> http://jsfiddle.net/Osoascam/AkZZr/6/ (これはエラーのないバージョンです) --> http://jsfiddle.net/Osoascam/AkZZr/7 /
その中には、モジュール (メイン アプリケーションと同様)、Module.AjaxInterface
Ajax 呼び出しModule.Modules.Inbox
を処理する 、電子メールの受信トレイに関連するタスクを実行する 、および Module.Pages.Gmail
ページを表示するためのいくつかのモジュールを処理する があります。これらはすべてモジュール パターンを使用して行われます。
これで、たくさんのコールバックがあることがわかります。this
これらの通話で何が起こるか知りたい...
私が得られないのは、this
参照に何が起こっているのか、どうすればそれを保存できるのかです:
したがって、モジュール自体の内部の関数への呼び出しは機能します...次に、 を呼び出しtest.ajaxCalls
、その代わりに を呼び出しますpretendRender()
。今、pretendRende
rで私はこれを持っています:
私の質問は...this
参照に何が起こっているのですか? に変わるのはなぜwindow
ですか?どうすれば修正できますか?call
またはを使用できることはわかってapply
いますが、 関数pretendRender
が で呼び出されておりAjaxInterface
、 への参照Modules.Inbox
が失われています ( を使用しない限りcaller
、 では使用できません"strict"
)。私はそれを保存するために渡すことができることを知っていますthis
がAjaxInterface
、私が本当に望んでいるのは、何が起こっているのかを真に理解し、エレガントなソリューションを作成することです.
javascript - 追加レベルの間接参照の具体的なメリット
下部にあるJavascriptコードの抜粋を検討してください。大まかに言って、2つのモジュールで構成されています。1つはメッセージを処理するためのものです。メッセージモジュール内のfiltersUpdateSuccessメソッドの利点は何ですか?
現在、tplPanelsモジュールのoverwriteAllメソッドに委任するだけです。私が思いついたアイデアの1つは、filtersUpdateSuccessメソッド内で、tplPanels.overwriteAllの呼び出しをtry/catchでラップできるということです。これは私に利益をもたらすでしょうか、そして間接化の追加レベルに他の利益はありますか?
PS ....私は次の質問に精通しており、それを調べてその中のリンクをたどりましたが、より一般的なものではなく、特定のコンテキストでの回答が必要です。間接参照のレベルはすべての問題を解決します
javascript - jQueryが機能しないモジュールパターンを明らかにする
私は明らかにモジュールのパターンをいじっています。私はもともとシングルトンパターンを使い始めましたが、モジュールパターンを読んだ方が良い選択肢のようです。
だから私は以下をテストしました:
これは、呼び出し時に正常に機能します
ただし、jQueryを使用したいので、試しました:
しかし、これは機能しません。以下を使用すると機能します。
呼び出すときにjQueryを追加せずに動作させるにはどうすればよいですか?