сейчас я нахожусь в такой точке, когда я чувствую, что мне нужно улучшить свои навыки JavaScript, потому что я уже вижу, что то, что я хочу реализовать, станет довольно сложным. Я перебирал один и тот же фрагмент кода 4 раза, и я до сих пор не уверен, что это лучший способ.
Задание:
Пользователь веб-страницы может добавлять различные формы на веб-страницу, которую я называю модулями. Каждая форма предоставляет разные пользовательские данные и должна обрабатываться по-разному. Формы / модули одного и того же типа могут быть добавлены в список форм по желанию пользователя.
Мое текущее решение:
Чтобы сделать код более читабельным и отдельными функциями, я использую объекты пространства имен. Первый объект содержит общие задачи и обращается к отдельным формам через карту, которая содержит несколько массивов, каждый из которых содержит идентификатор формы и ссылку на объект , который содержит все функции. которые должны быть выполнены специально для такой формы.
Структура выглядит примерно так:
var module_handler = {
_map : [], /* Map {reference_to_obj, id} */
init: function(){
var module = example_module; /* Predefined for this example */
this.create(module);
},
create: function(module) {
//Store reference to obj id in map
this._map.push([module,id = this.createID()]);
module.create(id);
},
createID: function(id) {
//Recursive function to find an available id
},
remove: function(id) {
//Remove from map
var idx = this._map.indexOf(id);
if(idx!=-1) this._map.splice(idx, 1);
//Remove from DOM
$('#'+id+'').remove();
}
}
var example_module = {
create: function(id) {
//Insert html
$('#'+id+' > .module_edit_inner').replaceWith("<some html>");
}
}
Теперь мой вопрос; -)
Нужна ли идея с картой?
Я имею в виду: нет ли чего-нибудь более элегантного, как:
var moduleXYZ = новый пример_модуля (id)
который копирует объект и ссылается только на эту форму .... Что-то более логичное и улучшающее скорость ?? Основная проблема заключается в том, что сейчас мне нужно обходить DOM каждый раз, когда я вызываю, например, "example_module.create () или более поздней версии для любой другой функции. С этой структурой я не могу ссылаться на форму, как с что-то вроде "этого" ???
Видите ли вы какие-либо улучшения на этом этапе ??? Это очень помогло бы мне !!! На самом деле, я просто боюсь пойти по неверному пути, глядя на все то, что я надену на это; -)
Спасибо!