0

既存の実装 (構造をあまり変更できない) では、別の関数内にネストされている関数を呼び出そうとしています:

function outer(innerFunction, obj) {

    //TODO: call innerFunction here, passing obj as first parameter

    function inner1(obj) {
        alert(obj.key);
    }
}
outer('inner1', {key:'value'});

jsfiddle はこちら: http://jsfiddle.net/tbyyw/

私はすでに を使用することを考えていましeval()たが、オブジェクトを渡す方法がわかりません - そして彼らは「eval は悪です」と言います ;)

私が思いついた別の解決策は、innerFunction文字列をチェックすることですが、これは、どの内部関数が存在するかを知る必要があることを意味します(さらに、新しい関数を追加すると、追加のチェックを書かなければならないことになります):

if(innerFunction == 'inner1') inner1(obj);

全体的な実装を変更せずに別の方法はありますか?

4

3 に答える 3