object - 编写一个 javascript 库

标签 object javascript module-pattern

我想写一个JS库,然后这样处理:

var c1 = Module.Class();
c1.init();
var c1 = Module.Class();
c2.init();

当然,c1 和 c2 不能共享相同的变量。 我想我知道如何处理对象,它是:

var Module = {

     Class = {

         init = function(){
             ...
         }

     }

}

但问题是如果我这样写,我不能有多个Class实例。 所以我试图通过功能实现相同的目标,但我认为我做的不对。

(function() {

    var Module;
    window.Module = Module = {};

    function Class( i ) {
        //How can "this" refer to Class instead of Module?
        this.initial = i;
    }

    Class.prototype.execute = function() {
        ...
    }

    //Public
    Module.Class = Class;

})();

我什至不知道它是否可能,但我接受以其他方式创建此模块的建议。 我不知道它是否也相关,但我在这个库中使用 jQuery。

最佳答案

用法:

var c1 = Module.Class("c");
var c2 = Module.Class("a");
var n = c1.initial(); // equals 'c'
c1.initial("s");
n = c1.initial(); // equals 's'

模块代码:

(function(window) {
    var Module = window.Module = {};
    var Class = Module.Class = function(initial)
    {
        return new Module.Class.fn.init(initial);
    };
    Class.fn = Class.prototype = {
        init: function(initial) {
            this._initial = initial;
        },
        initial: function(v){
            if (v !== undefined) {
                this._initial = v;
                return this;
            }
            return this._initial;
        }
    };
    Class.fn.init.prototype = Class.fn;
})(window || this);

这是使用 JavaScript“模块”设计模式;这与 JavaScript 库(如 jQuery)使用的设计模式相同。

这里有一个关于“模块”模式的很好的教程: JavaScript Module Pattern: In-Depth

关于object - 编写一个 javascript 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7541099/

相关文章:

javascript - 如何将来自 Smart admin 的注销警报弹出窗口也用于其他请求?

jquery 应用程序的 Javascript 模块模式

javascript - 选择具有特定元素值的数组

r - 带有 ifelse 和两个对象的自定义函数需要以动态方式从正确的列中读取 R

javascript - MeteorJS 电子邮件表单验证

Javascript:模块模式与构造函数/原型(prototype)模式?

JavaScript 使用模块模式创建类

javascript - 从另一个文件访问变量和方法

javascript - 如何使用变量为对象属性赋值?

javascript - 选择元素未正确重置