問題タブ [revealing-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 - javascriptモジュールパターン:プライベート関数からモジュールにプライベートプロパティを追加
createBar()
プライベート プロパティbar
がプロパティと同じレベルで作成されるように修正するにはどうすればよいfoo
ですか?
モジュールは次のように動作します。
アップデート:
これは私が今していることです:
しかし、どういうわけか私はそれが好きではありません。プライベート関数間で状態情報を共有するにはどうしますか?
javascript - モジュールパターンを明らかにするJavascript - 関数が戻った後に初期化変数を公開する
私は Javascript Revealing Module パターンを頻繁に使用しており、パブリック インターフェイスと内部を明確に分離できる点が気に入っています。しかし、全体的な使用パターンが正しいかどうか、またはパターンの変形を使用する必要があるかどうか疑問に思う状況に遭遇し続けています。
問題は、モジュールの init 関数に渡され、内部使用のためにプライベートに保存された何かが、Knockout バインディング式または他のモジュールで公開される必要がある場合です。モジュールの return ステートメントがすぐに実行され、しばらくしてから init 関数が呼び出されます。通常は、Razor ビュー内のスクリプト ブロックでレンダリングされる Ajax URL や生の JSON などの動的パラメーターが渡されます。モジュールの return ステートメントは、参照ではなくプライベート変数のコピーを返すだけなので、init 関数でプライベート変数を設定しても、既に返されたものを変更することはできません。
私の回避策は、「url」などのオブジェクトを関数でラップし、productsModule.getUrls() を介してそれらにアクセスすることです。ただし、変数がそれ自体が関数である Knockout オブザーバブルである場合は特に、これは非常に厄介になります。そのため、変数を評価するには、productsModule.getMyObservable()() のような二重括弧を使用する必要があります。
明らかにモジュールパターンに少なくとも近似するものを使用して、最新の内部値を取得するより良い方法はありますか?
javascript - javascript:コンストラクター関数と単一使用のモジュールパターンを明らかにする
コンストラクター関数をインスタンス化して、独自の _proto_ プロパティを持ち、コンストラクター関数にプロパティ 'prototype' を与える JavaScript で新しいオブジェクトを作成できることを理解するようになりました。
ここで、init は次のように呼び出すことができます。
MyController.prototype によって提供されるすべてのプロトタイプ プロパティを使用するつもりがない場合、インスタンス化を 1 回だけ実行し、二度と実行しないと仮定すると、これはやり過ぎではありませんか?
質問: 代わりに、公開モジュール パターンを使用してこのようにコーディングすることはできませんか?
ここで、init は次のように呼び出すことができます。
この場合、存在しない myController 内のプロパティにアクセスしようとすると、javascript エンジンはそのプロパティがプロトタイプ チェーンのどこかに存在するかどうかを調べようとしないため、時間を節約できます。
または、私が見落としている関数をインスタンス化することの他の利点はありますか?
javascript - モジュール パターンを使用して jQuery コールバックでプライベート変数にアクセスする
以下はエラーなしで実行されますが、DOM は更新されません。
アップデート
上記のコードとは対照的に、jQuery Ready イベント内で Cart.init() を実際に呼び出していませんでした。
javascript - Javascript: コンストラクター パターンと公開モジュール パターンの混合
モジュール パターンを明らかにすることで作成されたオブジェクトを拡張する Javascript クラスを作成する方法はありますか? 次のコードを試しましたが、同じことを達成する方法はありますか?
javascript - Revealing Module Pattern (RMP) の欠点
私は最近、Revealing Module Pattern (RMP) に精通し、それに関するかなりの数の記事を読みました。
とても良いパターンのようで、大きなプロジェクトで使い始めたいと思っています。私が使用しているプロジェクトでは: Jquery、KO、requireJS、Jquery Mobile、JayData。KO ViewModel に適しているように思えます。
具体的には、このバージョンを使用したいと思います。
私が見つけられなかったのは、このパターンを使用することの欠点です。それは何もないからですか (信じがたいと思います)?
使用を開始する前に考慮すべきことは何ですか?
javascript - 初期インスタンス化されたクラスを使用したジャスミンのテスト
JavaScript で明らかにするパターンと初期クラスのインスタンス化を使用しています。私も Jasmine を使用してこのクラスをテストしていますが、各テストを実行する前に myNamespace.myViewModel の状態をリセットする方法が必要です (これは単純な例ですが、複数の変数を持つ複雑なビュー モデルを想像してください)。
クラスの例を次に示します。
ジャスミンでは、次のことから始めます。
これを行う方法はありますか?
javascript - JavaScript 明らかにするモジュール パターン変数のスコープ
関数内の変数にアクセスできないという問題があります。
編集workerPage.grid = $("#grid").data("kendoGrid");
jQueryで
これを設定していることを追加するのを忘れました$(function(){});
claimsGird
保存関数内で変数を使用することはできません。 で参照する必要がありworkerPage.grid
ます。正常に動作するような他の変数ではありませんviewModel
。スニペットは次のとおりです。
完全なスクリプトは次のとおりです。
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.):
module-pattern - モジュールの複数インスタンスの作成
JavaScript をかなりよく理解し始めたと思っていましたが、明らかにそうではありませんでした。私の問題を例で説明しましょう。まず、次のモジュールを定義します。
次に、2 つのインスタンスを作成します。
ここで、カウンター変数を (公開されているため) 更新し、いくつかのアラートを実行します。ここまでは順調ですね。
では、最後に次のように言います。
これは私が理解していないビットです。このアラートが 0 になるのはなぜですか? 最初のアラートは 5 で、2 番目のアラートは 10 だと思っていました。
誰かが上記がどのように機能するかを説明したり、正しい方向に向けたりしていただければ幸いです。ありがとう