用自定义javascript全局命名空间替换窗口

用自定义javascript全局命名空间替换窗口,javascript,namespaces,global-variables,Javascript,Namespaces,Global Variables,我有一个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

我有一个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 () { }
     };
 }());
谢谢

// 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
注意:这并不是真正地“替换”
窗口
对象(因为没有办法这样做)-它只是将所有全局变量放入一个主全局对象中,而不是用每个变量污染全局名称空间

名称
mySpace
可以是您想要的任何内容。通常,它应该是应用程序特有的,不太可能与任何其他javascript或库可能使用的内容冲突

(function(global){
     global.p1HPStart = fm.p1hp;
     global.p2HPStart = fm.p2hp;
     global.p1HP = 100;
     global.p2HP = 100;
     global.trn = 0;
}(window));
然后,只要确保在需要一个自己的变量的任何地方,都在前面使用名称空间:

mySpace.variableName
注意:这并不是真正地“替换”
窗口
对象(因为没有办法这样做)-它只是将所有全局变量放入一个主全局对象中,而不是用每个变量污染全局名称空间

名称
mySpace
可以是您想要的任何内容。通常,它应该是应用程序特有的,不太可能与任何其他javascript或库可能使用的内容冲突

(function(global){
     global.p1HPStart = fm.p1hp;
     global.p2HPStart = fm.p2hp;
     global.p1HP = 100;
     global.p2HP = 100;
     global.trn = 0;
}(window));
这将创建一个“立即调用的函数表达式”<代码>窗口被传递到函数中,然后函数会向其附加许多属性

您可以将
窗口
更改为所需的任何对象,例如
fight.p1HP
,此函数将立即将列出的属性附加到该对象

这将创建一个“立即调用的函数表达式”<代码>窗口被传递到函数中,然后函数会向其附加许多属性

您可以将
窗口
更改为所需的任何对象,例如
fight.p1HP
,此函数将立即将列出的属性附加到该对象