Нужна консультация ... Javascript ООП / пространство имен - PullRequest
1 голос
/ 24 августа 2010

сейчас я нахожусь в такой точке, когда я чувствую, что мне нужно улучшить свои навыки 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 () или более поздней версии для любой другой функции. С этой структурой я не могу ссылаться на форму, как с что-то вроде "этого" ???


Видите ли вы какие-либо улучшения на этом этапе ??? Это очень помогло бы мне !!! На самом деле, я просто боюсь пойти по неверному пути, глядя на все то, что я надену на это; -)

Спасибо!

1 Ответ

1 голос
/ 24 августа 2010

Я думаю, вы ищете прототип:

=========

function exampleModule(id)
{
    this.id = id;
}


exampleModule.prototype.create = function()
{

}

=========

var module1 = new exampleModule(123);
module1.create();

var module2 = new exampleModule(456);
module2.create();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...