2013-02-12 70 views
1

我试着寻找一个类似的问题,要么不能正确地使用它,要么我很愚蠢。我是比较新的JavaScript和有一个关于创建多个对象实例的问题:有多个javascript对象的实例

这就是:

说你想建立一个“列表生成器”动态地使用JavaScript。您创建多个列表并向它们添加项目。所以你建立像这样一类(注意,该代码主要是说明,试图澄清的问题):

var dynamicList = function(listName){ 
    this.listTitle = listName; 
} 

dynamicList.prototype = { 

    buildList : function(){ 
     var template = $('<ul id="'+ this.listTitle +'"></ul>').append('<h2>' + this.listTitle + '</h2>'; 
     $(body).append(template); 
    } 

} 

现在问题来了:

说我使用的输入表单创建列表包装,并且每次他们提交表单时,新的列表就此诞生。这是如何管理的?我认为需要发生的每次都会创建一个新对象:

var list1 = new dynamicList("[user input title from form]"); //first list 
list1.buildList(); 

var list2 = new dynamicList("[user input title from form]"); //second list 
list2.buildList(); 

var list3 = new dynamicList("[user input title from form]"); //third list 
list3.buildList();  

var list[n] ... // and so on 
list[n].buildList(); 

但是我无法弄清楚如何做到这一点。我可以动态创建变量名称,或者如何解决这个问题?你会将它包装在更高级别的对象中,并为每个创建的列表创建一个增量系统?这甚至是一个问题,或者你可以递归地使用var list = new dynamicList为每个表单?

我希望我已经以每个人都能理解的方式来构思我的问题,感谢您花时间阅读它。我还希望对如何构建代码以确保最大的可伸缩性提出任何建议。

谢谢!

回答

2

如果你想有一些东西,并能够引用它们 - 将它们放入一个数组中。

var myLists = []; //Shorthand for new Array() 

var list = new DynamicList("[user input title from form]"); //first list 
list.buildList() 
myLists.push(list); 

list = new DynamicList("[user input title from form]"); //second list 
list.buildList() 
myLists.push(list); 

你也可以通过创建一个构造函数来摆脱buildList()调用。

+0

啊!我懂了。我只需将列表项和它们的属性作为JSON推送即可。谢谢!我现在更好地掌握如何构建它。 – 2013-02-12 04:38:59