创建命名空间Javascript单例类的对象
我是IIFE新手,尝试在Siungleton JavaScript类上用JavaScript实现名称空间: 我有一个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
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;
});