【问题标题】:I want subobjects in JavaScript我想要 JavaScript 中的子对象
【发布时间】:2017-10-24 07:15:36
【问题描述】:

我想以“子模块”之类的方式组织我的 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() 无效,我收到此错误消息:

未捕获的类型错误:dashboard.onReady 不是函数

我想在 APS 下的不同“子包”中组织我的代码,以具有一种层次结构。我怎样才能做到这一点?

【问题讨论】:

  • 你的问题可以简化为:var dashboard = function () {}; dashboard.onReady();

标签: javascript oop design-patterns javascript-objects


【解决方案1】:

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

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

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

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

或者改用dashboard().onReady

【讨论】:

    【解决方案2】:

    您使用了匿名函数,但没有让它立即运行以返回值。有两种解决方案。

    1. 像这样调用仪表板:

    dashboard().onReady()
    1. 更好的是,让匿名函数执行,注意末尾的“()”:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-12
      • 2018-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-01
      • 2013-10-07
      相关资源
      最近更新 更多