2013-10-17 45 views
3

這是我的代碼:的JavaScript越來越構造是不確定的

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是不確定的。

+0

加上'在功能 – bhb

+0

@bhb的最後返回init' - '回報init;'不會完全修復它。以後需要不同的語法:'myApp.jira()'。或者,如我的回答:'return {init:init}'和其餘部分與原始代碼相同。 – kamituel

回答

5

試試這個:

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(); 
}); 
+0

+1代碼解釋 – Tibos

+0

謝謝你是對的 – user217648

1

Working DEMO

或者你可以使用object literal模式來代替:

var myApp = {}; 

myApp.jira = { 

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

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