可能是一个非常愚蠢的问题,但我无法理解它:
我希望能够通过调用函数创建一个选项卡 - newTab(); 我希望这个函数创建一个新的tab对象(我可以通过执行tab0.close()等操作来操作;)
我的问题出现在使对象具有唯一名称:
//This will be used for the object ID
var tabQty = 0;
//Call to create a tab
newTab();
//Function to make the tab
function newTab(){
//This is how I want to make the names - tab0, tab1, tab2 etc
tabName = "tab" + tabQty;
// - this is my problem line - I can't use tabName = as it just overwrites the value of tabName. How do I get around this?
return tabName = new tabBuilder(tabName);
}
function tabBuilder(tabName){
return{
name: tabName,
close: function(){//blah}
//More to come here
}
}
我知道这可能不是最好的做事方式,所以我愿意接受建议!
干杯,
答案 0 :(得分:3)
如果要使用动态名称全局声明新变量,请使用window[tabName] = ...
。否则(推荐),创建一个新对象tabs
,并在tabBuilder
存储对tabs
对象的所有引用。
var tabs = {};
function newTab(){
//This is how I want to make the names - tab0, tab1, tab2 etc
var tabName = "tab" + tabQty;
tabQty++; // Added to implement the "unique tab name" feature
return (tabs[tabName] = new tabBuilder(tabName));
}
我在var
之前添加了tabName = "tab" + tabQty
,因此变量不会泄漏到全局范围。另外,我添加了tabQty++
,以便每个生成的名称都是唯一的。