我想用“子模块”之类的方式组织我的JavaScript对象,我这样写:

'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下面的不同“子包”中组织我的代码,以使代码具有层次感。我该如何实现?

最佳答案

dashboard本身是一个尚未返回包含onReady的对象的函数。

通过添加另一个()来完成IIFE:

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

    return {
        onReady: onReady
    }
})(); // Calls as IIFE


或者使用dashboard().onReady代替。

10-06 02:59