javascript - 在自执行函数中定义对象的原型(prototype)

标签 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,实际上这是真的,因为 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/

相关文章:

javascript - 如何在 jquery 对话框中显示第二个 ajax 响应?响应之间的冲突,第一个显示在 div 作品中,第二个仅警告

javascript - 在javascript中访问扩展对象

java - Java、C 和 C++ 中循环变量的类型限制

Perl,在循环外使用来自 While 循环内的变量?

javascript - 对象内 javascript 函数的持久性

javascript - 如何提交表单然后重定向到个性化感谢页面?

javascript - 将对象转换为 JSON 并删除键

sql-server - 什么是表提示锁的范围?

javascript - D3.js 的鼠标悬停事件在 Leaflet 中不起作用

java - Php,克隆对象,添加新方法,或覆盖它们