我想用"子模块"组织我的JavaScript-Object。我写了这个:
'use strict';
var APS = (function () {
var dashboard = (function () {
var onReady = function () {
alert(2);
};
return {
onReady: onReady
}
});
var onReady = function () {
alert(1);
dashboard.onReady(); // does not work
};
return {
onReady: onReady,
}
})();
$(document).ready(APS.onReady);
alert(1)
确实有效,dashboard.onReady()
不起作用,我收到此错误消息:
未捕获的TypeError:dashboard.onReady不是函数
我想在不同的"子包中组织我的代码"在APS之下有一种层次。我怎样才能做到这一点?
答案 0 :(得分:3)
dashboard
本身是一个尚未返回包含onReady
的对象的函数。
通过添加另一个()
来完成IIFE:
var dashboard = (function () {
var onReady = function () {
alert(2);
};
return {
onReady: onReady
}
})(); // Calls as IIFE
或者改为使用dashboard().onReady
。
答案 1 :(得分:1)
您使用了匿名函数,但没有让它运行以立即返回值。为此提供了两种解决方案。
dashboard().onReady()

var dashboard = (function () {
var onReady = function () {
alert(2);
};
return {
onReady: onReady
}
})();