問題タブ [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 投票する
5 に答える
893 参照

javascript - JavaScript モジュール パターン(関数(){})(); vsブロックステートメント

私の"Weird"例を使用した以前の質問への回答を見て、どちらの方法にも利点があるかどうか疑問に思っていました。

いくつかの HTML:

違いは何ですか:

window.onloadさらに、体の一番下にスクリプトを配置できるのに、なぜ人々は使用するのでしょうか? それとも単に個人的な好みの問題ですか?

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

javascript - JSモジュールのパターンオーバーライド機能

私は次のパターンを持っています

Douglas CrockFord に触発されたモジュール パターンを調整して、alerNumber関数を完全にオーバーライドする方法を教えてください。これまでのところshowNumber、関数は 20 ではなく 10 を表示しています。

よろしくお願いします

コード付きのJSFiddleはこちら

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

javascript - モジュールのパターンとスコープ

継承可能で、いくつかのパブリック プロパティを持つカプセル化されたオブジェクトを作成しようとしています。ここにいくつかのコードがあります:

私の質問はなぜ mo.bar() が 'undefined undefined' をログに記録するのですか? また、この問題を修正するにはどうすればよいですか?

publicVar1 と publicVar2 を MyObject モジュールの内部のスコープに保持しようとしていますが、myObject プロトタイプを拡張する他のオブジェクトによってパブリックにアクセス可能で継承されるようにもしています。

ありがとう。

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

javascript - Javascript モジュール パターン、プロトタイプ、Google クロージャー

このコード構造を Google Closure Compiler による難読化に耐えさせるのに苦労しています。サンプルコードは次のとおりです。

私のコードの他の場所では、次のようなものを書くことができる必要があります:

ただし、コンパイラはすべての名前を変更しています (予想どおり)。定義したプロトタイプを、難読化後にコード内の他の場所で使用できるようにするにはどうすればよいですか? 私は次のようにエクスポートしようとしました:

しかし、プロトタイプ メソッドが呼び出されたとき、または対応するクロージャが実行されたときに、事態は崩壊するようです。

どんな助けでも大歓迎です。

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

javascript - Javascript/Coffeescript では、テストでモジュールのパブリック関数をモックアウトするにはどうすればよいですか?

これは私の前の質問と同じですが、これは変数ではなく関数に関するものです。私はモジュールを持っていて、その中の関数をモックしたいと思っています。これが私のcoffeescriptコードです:

これは「生産」に警告しますが、「私はこれを嘲笑しました」と警告したいと思います。これどうやってするの?

出力を取得するJavaScriptは次のとおりです。


アップデート

元の質問の答えを適用して、自分で問題を解決する方法を見つけました。

this次の行に注目してくださいdoSomething = -> this.iWantToBeMocked()。しかし、ここでまだ答えなければならない問題があります。ここで使わなければならない理由がわかりませんthis。あざけるという文脈で doSomething = -> this.iWantToBeMocked()との違いを誰かに説明してもらいたいです。doSomething = -> iWantToBeMocked()