コンストラクタと同じ方法でパラメータをモジュールに渡す方法はありますか?モジュールパターンのコンストラクタパラメータ
私が見つけた答えは、セッター機能を示唆しているようでした。これは、私のモジュールはグローバル変数に依存するロジックを持つため、setterは "un-set"変数に依存するコードでインスタンス化されていないと呼び出せないため、私にとってはうまくいかないでしょう。
具体的には、私は、d3グラフを一般的に役に立つようにモジュール化しようとしており、データ配列パラメータでモジュールをインスタンス化できるようにしたいと考えています。
EDIT:d3グラフの場合、モジュールパターンが最も効果的です。
var thing = (function() {
var a = [1,2,3];
var l = a.length;
var doit = function() {
console.log('your array has '+l+' elements');
}
var doit2 = function() {
console.log('your array contains: '+a.toString());
}
return {
doit: doit,
doit2: doit2
}
})();
どのように渡すことができます。ちょうど更新機能で、後で渡すことができないデータの引数でインスタンス化する必要は何も...私は、このモジュールを持っている場合、一般的に
でもありませんvar aの代わりに使用する配列?
あなたはこのような何かを行うことができ
'VARの事は=(機能(パラメータ){VAR A = PARAM ;/*等* /})(dataArray); '? – nnnnnn
* '設定されていない変数'に依存するコードでモジュールがインスタンス化されていなければ、setterを呼び出すことはできません。*あなたのサンプルモジュールでは '.init()'やsetterメソッドを追加することに問題はありません。 'a'をデフォルトで空の配列に設定し、' .init() 'またはsetterメソッド内の* real *の値に設定することができます。クライアントコードが' doit() 'を呼び出さずに' .init() 'それはそれが値するものを得るでしょう。 – nnnnnn
静的なグローバルシングルトンであるモジュールの場合、それをIIFEへの引数として渡すか、単純にボディの中に入れるかは違いありません。再利用可能にするには、代わりにファクトリまたはコンストラクタ関数にします。 – Bergi