1

我试图寻找一个类似的问题,要么不能正确地表达它,要么我很傻。我对 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每种形式?

我希望我以一种每个人都能理解的方式来描述我的问题,感谢您花时间阅读它。对于如何构造代码以确保最大的可扩展性,我也很感激任何建议。

谢谢!

4

1 回答 1

2

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

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() 调用。

于 2013-02-12T03:31:55.417 回答