需要建议... JavaScript OOP /命名空间

现在我正处在一个地方,我觉得我需要提高自己的JavaScript技能,因为我已经看到我想要实现的东西会变得相当复杂。 我现在已经对同一段代码进行了4次测试,但我仍然不确定这是否是最好的方法。

任务:
网页用户可以添加不同的表单到我称为模块的网页。 每种形式都提供不同的用户输入,需要以不同的方式处理。 用户喜欢的表单/模块可以添加到表单列表中。

我目前的解决方案
为了使代码更具可读性和分离功能,我使用命名空间对象。 第一个对象包含一般任务,并通过一个映射引用单个表单,该映射包含几个数组,每个数组包含表单id对象引用,该对象包含所有需要执行的功能,特别是对于该类型的表单。


结构看起来或多或少类似于此:

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 = new example_module(id)

它复制对象并仅引用该窗体....更合乎逻辑的东西并提高速度? 主要问题是,现在我需要每次遍历DOM时,如果我打电话给例如“example_module.create()或更高版本的任何其他函数。有了这个结构,我不能像这样的形式像”这个“? ??


你看到这方面有什么改进? 这对我非常有帮助! 真的,我只是害怕现在看着所有的东西,我会放在这上面去错误的方式;-)

谢谢!


我认为你在寻找原型:

=========

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


exampleModule.prototype.create = function()
{

}

=========

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

var module2 = new exampleModule(456);
module2.create();
链接地址: http://www.djcxy.com/p/17039.html

上一篇: Advice needed... Javascript OOP/namespacing

下一篇: Can anyone explain namespace in javascript with an example?