Javascript单例模式

Javascript单例模式,javascript,javascript-objects,Javascript,Javascript Objects,我不知道如何解释我面临的问题。我写了一个小片段。请检查以下内容: var Package = {}; Object.defineProperty(Object.prototype, 'inherit', { value: function(Parent, args) { var temp = function(){}; temp.prototype = Parent.prototype;

我不知道如何解释我面临的问题。我写了一个小片段。请检查以下内容:

var Package = {};

Object.defineProperty(Object.prototype, 'inherit',
    {
        value: function(Parent, args)
        {
            var temp = function(){};
            temp.prototype = Parent.prototype;
            this.prototype = new temp();
            this.uber = Parent.prototype;
            this.prototype.constructor = this;
        },
        enumerable: false
    });

var Module1 = Package.Module1 = function() {
  // code;
};
Module1.prototype.method1 = function() {
};


var Module2 = Package.Module2 = function() {
  // code;
};
Module2.prototype.method2 = function() {
};


var Module3 = Package.Module3 = function() {
  // code;
};
// using custom : object.prototype.inherit
// Module3 inherit Module1 and 2;
Module3.inherit(Module1);
Module3.inherit(Module2);
Module3.prototype.method3 = function() {
};

//creating object 
var mod = new Package.Module3();
mod.method1();
mod.method2();
mod.method3();

创建mod对象时,我可以访问method1、2和3。但实际上我想在不创建对象的情况下调用方法,比如Package.Module3.method1;怎么可能呢?

对象文字符号

var Package = {
    ModuleA : {
        methodA : function(){},
        methodB : function(){}
    },
    ModuleB : {
        methodC : function(){},
        methodD : function(){}
    }
}

Package.ModuleA.methodA();

对象文字符号

var Package = {
    ModuleA : {
        methodA : function(){},
        methodB : function(){}
    },
    ModuleB : {
        methodC : function(){},
        methodD : function(){}
    }
}

Package.ModuleA.methodA();

试着这样做:

var Module3 = Package.Module3 = (function() {       
   var Module3 = function(){
       // using custom : object.prototype.inherit
       // Module3 inherit Module1 and 2;
   };
   Module3.inherit(Module1);
   Module3.inherit(Module2);
   Module3.prototype.method3 = function() {
   };
   return new Module3();
})();
在本例中,您只有Module3类的一个实例

用法:


试着这样做:

var Module3 = Package.Module3 = (function() {       
   var Module3 = function(){
       // using custom : object.prototype.inherit
       // Module3 inherit Module1 and 2;
   };
   Module3.inherit(Module1);
   Module3.inherit(Module2);
   Module3.prototype.method3 = function() {
   };
   return new Module3();
})();
在本例中,您只有Module3类的一个实例

用法:


Package.Module3是否必须是构造函数?您可以将其创建为一个对象并为其分配函数。或者将Module3的实例分配给Package.Module3。这完全取决于你还想用它做什么。现在我有了。但这是可以避免的,单例可以是javascript中的对象文本。使用new的变量实例并不多。此处的更多信息:如果我们使用……,则无法使用prototype添加方法:var方法=新函数{};Package.Module3是否必须是构造函数?您可以将其创建为一个对象并为其分配函数。或者将Module3的实例分配给Package.Module3。这完全取决于你还想用它做什么。现在我有了。但这是可以避免的,单例可以是javascript中的对象文本。使用new的变量实例并不多。此处的更多信息:如果我们使用……,则无法使用prototype添加方法:var方法=新函数{};但是我的继承方法不起作用。代码段iam使用函数inheritC,P{var F=function{};F.prototype=P.prototype;C.prototype=new F;C.uber=P.prototype;C.prototype.constructor=C;}@JaisonJustus然后创建一个外部继承函数:方法:ns.inheritFromsomeclass,someclass2…但我的inherit方法不起作用。代码段iam使用函数inheritC,P{var F=function{};F.prototype=P.prototype;C.prototype=new F;C.uber=P.prototype;C.prototype.constructor=C;}@JaisonJustus然后创建一个外部继承函数:方法:ns.inheritFromsomeclass,someclass2。。。