用自定义javascript全局命名空间替换窗口
我有一个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
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
,此函数将立即将列出的属性附加到该对象