JavaScript获取构造函数未定义

JavaScript获取构造函数未定义,javascript,namespaces,Javascript,Namespaces,这是我的代码: window.myApp= window.myApp|| {}; myApp.jira = (function () { var getId = function () { return ...; } var init = function() { var id = myApp.jira.getId(); } })(); $(document).ready(function () { myApp.jira.init(); /

这是我的代码:

window.myApp= window.myApp|| {};

myApp.jira = (function () {

  var getId = function () {
     return ...;
  }

  var init = function() {
     var id = myApp.jira.getId();
  }

})();

$(document).ready(function () {
    myApp.jira.init();  // here jira is null and getting undefined
});
加载页面时,会显示jira未定义。

尝试以下操作:

window.myApp= window.myApp|| {};

// Function here is being immediately invoked. No "return" statement
// in your code is equivalent to "return undefined;".
myApp.jira = (function () {

  var getId = function () {
     return ...;
  }

  var init = function() {
     var id = myApp.jira.getId();
     // Bonus note: you can simplify this:
     // var id = getId();
  }

  // If we return an object with functions we want
  // to expose (to be public), it'll work,
  return {
    init: init,
    getId: getId
  };

})();  // <-- here you'll invoking this function, so you need return.

$(document).ready(function () {
    // Without 'return' above, myApp.jira evaluated to undefined.
    myApp.jira.init();
});
window.myApp=window.myApp |{};
//正在立即调用此处的函数。没有“返回”语句
//在您的代码中相当于“returnundefined;”。
myApp.jira=(函数(){
var getId=函数(){
返回。。。;
}
var init=函数(){
var id=myApp.jira.getId();
//注意:您可以简化此操作:
//var id=getId();
}
//如果我们返回一个包含所需函数的对象
//揭露(公开)会有用的,
返回{
init:init,
getId:getId
};
})();  // 

或者您可以使用
对象文字
模式:

var myApp = {};

myApp.jira = {

      getId: function () {
         return ...;
      },

      init: function() {
         var id = this.getId();
      }
    };

return init
添加到function@bhb-
返回init不会完全修复它。以后需要不同的语法:
myApp.jira()
。或者,在我的回答中:
返回{init:init}
,其余部分与原始代码相同。