1

我正在构建一个应用程序的命名空间,它看起来如下:

var app = {};
app.utils = {
    Expiration: function(){ // contructor
    ... // some code
    },
    init: (function(){
         app.utils.Expiration.prototype = function(){....}
      ())
};

但我得到一个错误:TypeError: Cannot read property 'Expiration' of undefined,实际上这是真的,因为 utils 仍在定义中,我知道我可以在 app 范围之外定义原型,我的问题是:我可以在 app 或 app.utils 中用 self 定义它吗执行功能或通过任何其他方式,谢谢。

4

1 回答 1

5

您不能在静态声明中引用自己的变量名。您的自执行函数会导致在静态声明时对其进行评估和执行。因此app.utils尚未定义。

有替代方案。这是一个:

var app = {};
app.utils = {};

app.utils.Expiration = function(){ // contructor
    ... // some code
    };

app.utils.Expiration.prototype = ...

由于这些连续语句中的每一个都添加了另一个级别的属性,因此这些语句必须按此顺序一个接一个地执行,以便前面的元素就位。

于 2012-04-29T02:09:50.273 回答