問題タブ [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.

0 投票する
1 に答える
499 参照

javascript - re:jQuery; グローバルajaxイベントを非DOMオブジェクトにバインドする

ここでの基本的なモジュールの質問:モジュールパターンを放棄すると、グローバルハンドラーを正常に機能させることができますが、このテストコードは機能せず、理由を理解するのが非常に困難です。

インスタンスにアタッチされたハンドラーMyModuleは、ajax呼び出しの実行時に実行されることはありません。代わりにハンドラーをアタッチすると$(document)問題なく動作しますが、なぜそのグローバルイベントがモジュールオブジェクトに正しくバインドされていないように見えるのか不思議です。

編集:これはさらに簡単な例です:

に置き換える$(x)と、機能します...非DOMオブジェクト(または他のグローバルajaxイベント)に$(document)バインドできないようです?ajaxStart


@ Nucleon、これは私には完全には正しくないようです。理由の例を次に示します。

ここで、(カスタム)イベント「foo」は2つのパターンを介してバインドされ、異なるトリガーメソッドはパターンの特異性を示します...「ロングハンド」アラートを2回、「ショートハンド」アラートを1回受け取ります。

これで、でグローバルイベントを発生させることもできます$.event.trigger("foo")(ただし、同等のグローバルtriggerHandlerは存在しません)。問題は、このコードを最後に追加した場合です。

このグローバルイベントトリガーでは、どちらのハンドラーも実行されません。

ただし、item上記で提案したように、いくつかのDOMタイプの要素に置き換えると、ローカルイベントとグローバルイベントの両方処理されますが、「省略形」ハンドラーは機能しなくなるという警告があります*。したがって、ローカル処理は非DOMオブジェクトで機能しますが、特にグローバル処理では機能しないようです。

-m

*短縮パターンは非DOMオブジェクトにのみ適用されるため、短縮ハンドラーは機能を停止します。個人的には、非DOMオブジェクトのこの「省略形」の動作をjQueryから削除する必要があると思います。それについて知っている人はごくわずかであり、グローバルなjQueryオブジェクトページに1つのあいまいな文でしか文書化されていません...その動作は、人々がおそらく気づいていない拘束力のあるステップを暗黙的に実行するため、気づいていない人を狂わせる可能性がありますの。


ああ、わかりました...$.event.trigger機能は公開されていませんが、基盤となるイベント起動メカニズムによって使用されています。私はそれを使うべきではないと思います。この動作は、jQuery開発者が正しく実装するのが困難であり、完全に放棄しているように見えます(または、「修正済み」とマークされたこのバグレポートから収集したものです:DEPRECATE AJAX "GLOBAL" EVENT BEHAVIOR)。

.triggerただし、次のアラートの1つだけが実行されるため、DOMオブジェクトまたは非DOMオブジェクトに対して同じように動作するものとして文書化されることについてはまだ少し混乱しています。

fooこれは、設定されたプロパティが実際には従来の意味での「適切な」JSプロパティではないことを意味していると思いdomます(コンソールでオブジェクトを検査するときに正しく表示されますが)?

注:これはすべて知識のためです。上記のバグリンクの「修正」のアドバイスを参考にして、すべてのAJAX(およびその他のグローバル)イベントをに添付するだけですdocument。 jQuery1.9で強制される動作になります。しかし、私はすでに青いピルを飲んでいて、うさぎの穴から離れすぎて戻ってこないような気がします。

0 投票する
1 に答える
1064 参照

javascript - 外部からの RequireJS 設定モジュール変数が有効にならない

requireJS Define モジュール内で変数を設定するのに問題があります。フラットアウトは有効になりません。問題を説明するために、次の(カットダウン)例があります。

定義されたモジュールは次のとおりです。

「TesterModule」を別の依存関係として設定し、次のコード行を実行します。

コンソールに出力されるのは次のとおりです。

私はそれがあるべきだと思っていたでしょう:

variable = blah を実行するだけでモジュールに変数を設定しても効果がないようです。モジュールのメソッド内で変数を設定する必要があるようです。誰かが私にこれがなぜなのか説明できますか? または、私が間違ってコーディングしているものは何ですか?

前もって感謝します

0 投票する
3 に答える
2015 参照

javascript - JS モジュールのパターン = キャッシング / パフォーマンスの向上?

この記事http://javascriptweblog.wordpress.com/2011/05/31/a-fresh-look-at-javascript-mixins/を読みました。

「#4キャッシングの追加」というタイトルのセクションでは、次のように述べています。

ミックスインの周りにクロージャーを形成することで、最初の定義実行の結果をキャッシュでき、パフォーマンスへの影響は顕著です。

これがどのように機能するのか理解できません。ここでモジュール パターンを使用すると、コードの高速化/キャッシュ バージョンにどのようにつながるのでしょうか?

0 投票する
2 に答える
165 参照

javascript - javascriptで条件付きでモジュールパターンの1つのインスタンスをインスタンス化する

モジュールを公開しようとしています。そのインスタンスを 1 つだけすべての呼び出し元に公開し、モジュールが呼び出されてインスタンス化されるまで待機したいと考えています。私はこれをやろうとしました:

しかし、実際にはそれは難読化にすぎません

私が意図していたのは、 が初めて呼び出されたobj.foobar = new foobar()ときにインスタンス化することでした。2 回目は、既にインスタンス化されたバージョンを使用して呼び出されました。ここにはありませんが、インスタンス化を待機する必要があるため、すぐに実行できない依存関係があります。obj.foobar.GetId()obj.foobar.GetId()new foobar();

どうすればこれを達成できますか、何が欠けていましたか?

0 投票する
1 に答える
5458 参照

javascript - モジュールパターンとシングルトンパターンの違いは?

Module Pattern一部のプロジェクトでは、代わりにを使用しSingleton Pattern、その逆を使用することを見てきました。

Module Pattern正確に知りたいのですが、とはどう違いSingleton Patternますか?

0 投票する
2 に答える
11489 参照

javascript - JavaScriptモジュールパターンとコンストラクターでメソッドが定義されたコンストラクター

単一のインスタンスと複数のインスタンスの観点から、モジュール パターンに続く余分なコード行をすべて記述するのではなく、コンストラクター本体で定義されたメソッドとプロパティを持つ標準のコンストラクターを使用するのはなぜでしょうか?

モジュールパターンサンプル: http: //jsfiddle.net/T3ZJE/1/


コンストラクターのサンプル: http://jsfiddle.net/EuvaS/2/

私にとって、最終結果はほとんど同じです。どちらもパブリック プロパティとメソッドを持つことができ、パブリック メソッドによってアクセスできる「プライベート」変数とメソッドを持つことができます。

どちらも、シングルトンに対してパブリック/プロトタイプメソッドを1回定義し、オブジェクトの複数のインスタンス/クローンに対して複数回定義します。

何か不足していますか?違いはなんですか?

0 投票する
3 に答える
2293 参照

javascript - JavaScriptでのこれら3つのモジュールパターン実装の違いは何ですか?

JavaScriptモジュールパターンの例として、次の3つのコードブロックを見てきました。違いは何ですか?なぜ私は他のパターンよりも1つのパターンを選ぶのですか?

パターン1

パターン2

パターン3

私の知る限り、JavaScriptコミュニティは、一般的にパターン3が最適であることに賛成しているようです。最初の2つとどう違うのですか?3つのパターンすべてを使用して、変数と関数をカプセル化できるように思えます。

注:この投稿は実際には質問に答えていません。また、重複しているとは考えていません。

0 投票する
1 に答える
574 参照

jquery - jQueryチュートリアルモジュールパターンの例を理解する

ラーニングセンターのコード編成セクションで公開されたモジュールパターンに関する最後のコードフラグメント(以下に報告)を考慮して、例のモジュールのいくつかの側面を理解しようとしています。

  • 変数宣言($items$container...)はで区切られ、;関数宣言(createContainer、、、、....)はで区切られます。なんで?ブラケットの問題はありますか?buildUrlshowItem,
  • 最初の3つの変数(、、および)の名前がで$items始まる$container$currentItem$なぜですか?これは、DOMフラグメント変数を識別するために使用される命名規則(javascript文字を許可する$ため)を意味しますか、それとも他の理由がありますか?
  • 他の関数(、、 ...)が持っていないのに、なぜ関数はを使用して宣言されcreateContainerているのですか?varbuildUrlshowItemvar

// jQuery機能のモジュールパターンを使用$(document).ready(function(){

0 投票する
1 に答える
992 参照

javascript - Javascript revealing module pattern Noob

I'm starting Addy Osmani's amazing book on javascript design patterns but can't seem to get off the ground. Can anyone tell me what's wrong here with my approach (I'm using Raphael, just for fun.):

http://jsfiddle.net/aGCv8/

0 投票する
3 に答える
116 参照

javascript - JS テンプレート メソッド パターンの this の意味

マークされた行が見つからないのはなぜprotectedACMemberですか?

プライベート、保護、およびパブリック メンバーをシミュレートするための適切なパターンはありますか? 静的/非静的も?