2014-07-25 45 views
0

的一部分,比方說,我有這樣的事情:通過名稱調用一個函數,它不是全球範圍

var MyApp = MyApp || {}; 

MyApp.feature = (function($){ 
    var somelocalVariable, 
     otherone 

    init = function() { 
    }, 
    somePrivateFunction = function() { 
    var functionName = 'otherFunction'; 
    //how can I call otherFunction by name (using variable above) 
    }, 
    otherFunction = function() { 

    }; 

    return { 
    init: init 
    } 

})(jQuery); 

在這個例子中,如果我做window['otherFunction']什麼都不會發生,因爲它不是一個全局函數。我如何將它作爲更私人範圍的一部分來執行?

+2

這甚至沒有意義。 'MyApp.feature'變成'otherFunction','{init:init}'被丟棄。無論如何,如果你想通過名字來引用你的函數,請將它們放在一個對象中。 – Ryan

+0

@ minitech - 我認爲OP意在返回一個帶有屬性的對象,而不僅僅是* otherFunction *。 – RobG

+0

您的函數聲明也不匹配。 – Seth

回答

1

替換 「窗口」 與 「此」

this[functionName]();