创建命名空间Javascript单例类的对象

创建命名空间Javascript单例类的对象,javascript,javascript-objects,javascript-namespaces,Javascript,Javascript Objects,Javascript Namespaces,我是IIFE新手,尝试在Siungleton JavaScript类上用JavaScript实现名称空间: 我有一个JavaScript类(比如mainclass): 然后我有另一个JavaScript名称空间类: myIIFE.InsideIIFE = (function() { var inside = function() {} inside.prototype = { //some methods } return inside; }); 我想在myiLi

我是IIFE新手,尝试在Siungleton JavaScript类上用JavaScript实现名称空间:

我有一个JavaScript类(比如
main
class):

然后我有另一个JavaScript名称空间类:

myIIFE.InsideIIFE = (function() {
     var inside = function() {}
     inside.prototype = { //some methods }
     return inside;
});
我想在
myiLife
中创建一个
myiLife.InsideiLife
对象,这给我带来了一个错误:

myIIFE.InsideIIFE is not a constructor
我做错什么了吗?或者,如果这是一个正确的方法,那么我应该做什么改变

我试着使用
newthis.insideLife()
,只是
insideLife
,但没有一个奏效


编辑:

从我的分析中,我了解到
myiLife
(父对象)是一个对象,因为它在以下位置返回一个对象:

 return {
     getInstance: function() {
          //method body
     }
 }

这段代码有很多问题,让我们从一开始就试着在头脑中运行它:

var myIIFE = (function () {
 ....
})();
这导致
myiLife
成为一个对象,准确地说,这个对象:

{
   getInstance: function() {
       if (!this.instance) {
            this.instance = createInstance();
       }
       return this.instance;
   }
}
那么,我想你会的

myIIFE.getInstance()
它试图返回
new myiLife()

它运行到
myiLife()
并尝试执行以下操作:

new IIFE.InsideIIFE();
我想你是想写信吧

new myIIFE.InsideIIFE();
因为
iLife
没有在您提供的代码中定义它

让我们看看什么是
MyiLife.InsideLife

var myIIFE.InsideIIFE = (function() {
     var inside = function() {}
     inside.prototype = { //some methods }
     return inside;
});
首先,您从
var
开始,这是错误的,因为
myiLife
已经定义,您只是向它添加了一个新属性。因此,它应该是简单的

myIIFE.InsideIIFE = (function() {
     var inside = function() {}
     inside.prototype = { //some methods }
     return inside;
});
它应该会起作用

一般来说,代码似乎没有很好地掌握整个“构造函数”概念。我建议你看看下面的链接,它们应该会有所帮助

myIIFE.InsideIIFE = (function() {
     var inside = function() {}
     inside.prototype = { //some methods }
     return inside;
});