1

JavaScriptPayment Gateway API ラッパーがあります。

しかし、それはひどく設計されています。

163 個のグローバル (ウィンドウ) オブジェクトを使用します。

私がやりたいことは

API ラッパーによって生成されたすべてのグローバル オブジェクトを取得します

それらをすべて「PG」という名前の1つのオブジェクトに入れます


だから私はその方法を使用することができます

PG.methodName()

変数を取得する

PG.variableName


JavaScriptでこれを達成するにはどうすればよいですか?

または、名前空間でスクリプトをロードする他の方法はありますか?


問題のある JS ライブラリは次のとおりです。Gist を参照してください。

4

2 に答える 2

1

ダミーのJavaScriptオブジェクトを作成し、次のように関数と変数を追加できます。

var PG = PG || {};
PG.methodName = apiMethodName;
PG.variable = variableName;

このアプローチではPG、元の関数をwindowスコープ内に残したまま、スコープ内に複製を作成します。それらをグローバルスコープから移動するには、APIスクリプト自体を変更する必要がありますが、これはお勧めできません。

于 2013-03-21T12:02:59.587 に答える
1

あなたは閉鎖を探しています。

すぐに呼び出される関数式」 (「自己実行匿名関数」とも呼ばれます) を使用して、コードをラップして実行します。

(function( window, document, NS, undefined ){

  NS.variableName = "string value";
  NS.methodName = function() {};

  function myFunction() { alert('within closure'); };

}( window, window.document, (window.NS = window.NS || {}) ));

NSその後、クロージャーの外側からアクセスできますがmyFunction、クロージャー スコープに制限されている関数にはアクセスできません。

はい、またはに名前を変更NSすることもできます:)PGPayGate

于 2013-03-21T12:13:27.743 に答える