Я попытался найти аналогичный вопрос и либо не могу его правильно сформулировать, либо веду себя довольно глупо. Я относительно новичок в 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 для каждой формы?

Надеюсь, я сформулировал свою проблему так, чтобы все могли ее понять, спасибо, что нашли время, чтобы ее прочитать. Я также был бы признателен за любые предложения относительно того, как структурировать код, чтобы обеспечить максимальную масштабируемость.

Благодарность!

1
Jesse Kernaghan 12 Фев 2013 в 07:23

1 ответ

Лучший ответ

Если вы хотите иметь 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 (), создав конструктор.

2
RichH 12 Фев 2013 в 07:31
Ах! Понятно. И я мог бы просто отправить элементы списка и их атрибуты как JSON. Спасибо! Теперь я лучше понимаю, как это структурировать.
 – 
Jesse Kernaghan
12 Фев 2013 в 08:38