既存の実装 (構造をあまり変更できない) では、別の関数内にネストされている関数を呼び出そうとしています:
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);
全体的な実装を変更せずに別の方法はありますか?