JS对象命名问题

时间:2011-11-23 13:35:30

标签: javascript

可能是一个非常愚蠢的问题,但我无法理解它:

我希望能够通过调用函数创建一个选项卡 - 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
   }
}

我知道这可能不是最好的做事方式,所以我愿意接受建议!

干杯,

1 个答案:

答案 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++,以便每个生成的名称都是唯一的。