我正在构建应用程序的命名空间,它看起来如下:
var app = {};
app.utils = {
Expiration: function(){ // contructor
... // some code
},
init: (function(){
app.utils.Expiration.prototype = function(){....}
())
};
但我得到一个错误:TypeError: Cannot read property 'Expiration' of undefined
,实际上它是真的beacuse utils仍然被定义,我知道我可以在app范围之外定义原型,我的问题是:我可以在里面定义它app或app.utils具有自动执行功能或任何其他方式,谢谢。
答案 0 :(得分:5)
您不能在静态声明中引用自己的变量名称。您的自执行函数会导致在静态声明时进行评估和执行。因此app.utils
尚未定义。
还有其他选择。这是一个:
var app = {};
app.utils = {};
app.utils.Expiration = function(){ // contructor
... // some code
};
app.utils.Expiration.prototype = ...
由于这些连续语句中的每一个都添加了另一级别的属性,因此这些语句必须按此顺序依次执行,以便前面的元素就位。