我构建了一个应用的命名空间,它看起来如下:
var app = {};
app.utils = {
Expiration: function(){ // contructor
... // some code
},
init: (function(){
app.utils.Expiration.prototype = function(){....}
())
};
但我得到一个错误:TypeError: Cannot read property 'Expiration' of undefined
,实际上这是真的,因为 utils 仍在定义中,我知道我可以在范围之外定义原型(prototype)关于应用程序,我的问题是:我可以在应用程序或 app.utils 中使用自执行函数或任何其他方式定义它吗,谢谢。
最佳答案
您不能在静态声明中引用您自己的变量名。您的自执行函数会导致在静态声明时对其进行评估和执行。因此 app.utils
尚未定义。
还有其他选择。这是一个:
var app = {};
app.utils = {};
app.utils.Expiration = function(){ // contructor
... // some code
};
app.utils.Expiration.prototype = ...
由于这些连续的语句中的每一个都添加了另一层属性,因此这些语句必须按此顺序一个接一个地执行,以便前面的元素就位。
关于javascript - 在自执行函数中定义对象的原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10369101/