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 文件中。我还想用不同的全局命名空间(如fight.p1HP)替换“窗口”。

我怎样才能做到这一点?

我在其他类似问题中看到了像下面这样的代码作为建议的答案,但我不太明白如何使用它来替换 window.

 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对象(因为没有办法这样做) - 它只是将所有全局变量放入一个主全局对象中,而不是用每个变量污染全局命名空间。

名称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 回答