在自执行函数中定义对象的原型

时间:2012-04-29 01:58:43

标签: javascript object scope prototype

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

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具有自动执行功能或任何其他方式,谢谢。

1 个答案:

答案 0 :(得分:5)

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

还有其他选择。这是一个:

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

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

app.utils.Expiration.prototype = ...

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