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)。
有什么建议吗?
答案 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
};