gpt4 book ai didi

javascript - 如何在同一个 namespace 中创建两个不同的 namespace ,避免覆盖第一个 namespace ?

转载 作者:行者123 更新时间:2023-11-28 08:55:07 26 4
gpt4 key购买 nike

我想使用两个字符串(我不知道它们的内容)来创建两个 namespace 。如果 namespace 存在,我不想创建一个新的 namespace 。这是我的代码:

function createNameSpace(nameSpace)
{
var spaceArr = nameSpace.split(".");
var curSpace = window;

//judge if this nameSpace exists.
var i;
for(i in spaceArr)
{
curSpace = curSpace[spaceArr[i]];
if(curSpace)
window.alert("nameSpace1:" + nameSpace + "\ncurSpace do exists:" + curSpace + "\ni:" + i + "\nspaceArr[i]:" + spaceArr[i] + "|");
else
{
curSpace = {};
window.alert("nameSpace1:" + nameSpace + "\ncurSpace not found:" + curSpace + "\ni:" + i + "\nspaceArr[i]:" + spaceArr[i] + "|");
break;
}
}

//now curSpace must have been created.
i++;
//window.alert("nameSpace2:" + nameSpace + "\ni:" + i + "\nspaceArr.length:" + spaceArr.length);
//create the nameSpace
for(;i < spaceArr.length; i++)
{
//window.alert("nameSpace2:" + nameSpace + "\ni:" + i + "\nspaceArr.length:" + spaceArr.length);
if(i == 0)
{
window[spaceArr[i]] = {};
curSpace = window[spaceArr[i]];
}
else
{
//window.alert("nameSpace3:" + nameSpace + "\ncurSpace[spaceArr[i]]:" + curSpace[spaceArr[i]]);
curSpace[spaceArr[i]] = {};
curSpace = curSpace[spaceArr[i]];
}
}
return curSpace;
}

问题是,如果我将“myTest.myNameSpace”和“myTest.monaNameSpace”发送到此函数中,当我发送“myTest.monaNameSpace”时,它都会发出“curSpace not found”的警报,而应该是“curSpace do contains:” ”。我不知道错误在哪里,有人可以告诉我吗?

最佳答案

我认为你的算法有点复杂。我对它进行了一些重构,并添加了一个测试,并验证它在控制台中是否有效。我也多次编写过这段代码,所以我很确定我已经满足了您的要求

function createNameSpace(nameSpace)
{
var spaceArr = nameSpace.split(".");
var curSpace = window;

//judge if this nameSpace exists.
var i = 0;
for(i = 0;i < spaceArr.length; i++)
{
var next = spaceArr[i];
console.log(curSpace, next);
if(curSpace[next] == undefined)
{
curSpace[next] = {};
curSpace = curSpace[next]
}
else
{
curSpace = curSpace[next];
}
}

return curSpace;
}
createNameSpace("myTest.myNameSpace");
console.log(myTest.myNameSpace);
myTest.myNameSpace.myName = "Leat Hakkor";
createNameSpace("myTest.monaNameSpace");
console.log(myTest.monaNameSpace);
console.log(myTest.myNameSpace.myName);

关于javascript - 如何在同一个 namespace 中创建两个不同的 namespace ,避免覆盖第一个 namespace ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18613814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com