Я попытался найти аналогичный вопрос и либо не могу его правильно сформулировать, либо веду себя довольно глупо. Я относительно новичок в 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 ответ
Если вы хотите иметь 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 (), создав конструктор.
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Обратите внимание, что JavaScript — это НЕ Java. Включите все теги, относящиеся к вашему вопросу: например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [стройный] и т. д.