0

ゲームの一連のグローバル変数を初期化する JavaScript 関数があります。

 function buildVariables(fs,fm) {
     window.p1HPStart = fm.p1hp;
     window.p2HPStart = fm.p2hp;
     window.p1HP = 100;
     window.p2HP = 100;
     window.trn = 0;
  }

現在、この JavaScript はすべて同じ HTML ファイルにあります。それを独自の .js ファイルに移動し、この HTML ファイルに含めたいと考えています。また、「window」を、fight.p1HP のような別のグローバル名前空間に置き換えたいと考えています。

これどうやってするの?

他の同様の質問で提案された回答として以下のようなコードを見たことがありますが、それを使用してウィンドウを置き換える方法がよくわかりません。

 var cartTotaler = (function () {
     var total = 0; tax = 0.05;

      // other code

      return {
         addItem : function (item) { },
         removeItem : function (item) { },
         calculateTitle : function () { }
     };
 }());

ありがとう。

4

2 に答える 2

2
// initialize your own global object
if (!window.mySpace) {
    window.mySpace = {};
}

// then use it
function buildVariables(fs,fm) {
     mySpace.p1HPStart = fm.p1hp;
     mySpace.p2HPStart = fm.p2hp;
     mySpace.p1HP = 100;
     mySpace.p2HP = 100;
     mySpace.trn = 0;
  }

次に、独自の変数のいずれかが必要なすべての場所で、その前に名前空間を使用していることを確認してください。

mySpace.variableName

注: これはオブジェクトを実際に「置換」するわけではありませんwindow(それを行う方法がないため)。変数のすべてでグローバル名前空間を汚染するのではなく、すべてのグローバル変数を 1 つのマスター グローバル オブジェクトに入れるだけです。

名前mySpaceは何でも構いません。通常、これはアプリケーションに固有のもので、他の JavaScript やライブラリが使用する可能性があるものと競合する可能性が低いものにする必要があります。

于 2012-08-22T19:29:20.213 に答える
1
(function(global){
     global.p1HPStart = fm.p1hp;
     global.p2HPStart = fm.p2hp;
     global.p1HP = 100;
     global.p2HP = 100;
     global.trn = 0;
}(window));

これにより、「即時に呼び出される関数式」が作成されます。windowが関数に渡され、多数のプロパティがアタッチされます。

windowなど、必要なオブジェクトに変更できfight.p1HPます。この関数は、リストされたプロパティをそのオブジェクトにすぐにアタッチします。

于 2012-08-22T19:30:25.727 に答える