OO JS - 循环通过对象数组

时间:2011-11-24 16:17:41

标签: javascript oop

OO Js的新手,以前用函数编程,所以现在试着修复它!

我正在制作标签布局 -

我通过调用:tab.NewTab()创建一个标签; 我可以访问选项卡[0],选项卡[1]等

中的选项卡
var tabCount = 0;
var tabs = [];

tabs.NewTab = function (){
    var tabName = "tab" + tabCount;
    tabs[tabCount] = new Tab(tabName);
    tabCount++;
};

function Tab(tabName){
    return{
        name: tabName
    }
}

我想创建一个计算打开多少个标签的函数:

tabs.HowMany = function () {
    for (var i in tabs) {
        alert("new");
    }
};

这也是返回方法(0,1,NewTab,HowMany)。

有什么建议吗?

3 个答案:

答案 0 :(得分:2)

您正在寻找tabs.push(new Tab(tabName));

然后抛弃tabCount,而是使用所有javascript数组原生的length属性:tabs.length

此外,您的Tab构造函数是错误的。由于目前已编写,因此不应使用new调用它。只需致电Tab('someName'),它就会返回您正在寻找的对象。但是,如果您这样做,请将其更改为tab,因为非构造函数应为小写。

如果您真的非常渴望使用new关键字,那就是Tab应该是这样的:

function Tab(tabName){
   this.name = tabName;
 }

修改

如果要遍历数组的所有成员,这是最简单的方法:

for (var i = 0; i < tabs.length; i++)
    var currentTab = tabs[i];

答案 1 :(得分:0)

您需要将var tabs = [];更改为var tabs = new Array();。 并使用tabs.push(new Tab(tabName));

为其添加项目

简单计数:

var count = tabs.lenght

项目的枚举:

for (var i = 0; i < tabs.length; i++) {
    alert(tabs[i]);
}

答案 2 :(得分:0)

你可以这样做:

tabs.HowMany = function () {
    for (var i in tabs) {
        if(tabs.hasOwnProperty(i)){
               if(typeof tabs[i] !== 'function'){
                     alert('new')
               }
        }
    }
};

但你最好将其作为数组切换

tabs.push(new Tab(tabName))

tabs.HowMany = function () {
   return tabs.length
};