1

JavaScriptを保存するjsonオブジェクトに

    var jsonObj = {
      "js": "var x=1;\n   callback(x);"
    }

このJavaScriptを実行するには、コールバックの実装を提供する必要があります。コールバックが値xを出力するとします。

次に、jsonObj.jsを使用して呼び出しを行い、指定されたjavascriptが実行されてxの値が出力されるようにします(コールバックは値を出力します)。

eval関数を試しましたが、構文が間違っているか、evalがここでまったく使用されていない可能性があります。

どんな助けでも大歓迎です。ありがとう!!

注:それが役立つ場合、私は実際にgwtを使用してFirefoxプラグインを作成しています。このコードの平和は、ネイティブJavaScript関数として記述されています。

4

1 に答える 1

2

を渡しcallbackたい場合は、のFunction代わりにコンストラクターを使用してeval、パラメーターを定義します。

var jsonObj = {
  "js": "var x=1;\n   callback(x);"
};

var f = Function('callback', jsonObj.js);

次に、関数の引数を渡すことができます。

f(function(n) { alert(n); }); // 1

http://jsfiddle.net/HWCVD/


コンストラクターは、Function渡す最後の引数が関数の本体であり、先行するすべての引数が関数のパラメーターになるように設計されています。

したがって、パラメーターを追加する場合は、それらをFunctionコンストラクターに渡すだけです。

var jsonObj = {
  "js": "var x=y + 1;\n   callback(x);"
};

var f = Function('y', 'callback', jsonObj.js);

次に、引数を渡します。

//  v-"y"
//  v
  f(2, function(n) { alert(n); }); // 3
//         ^
//         ^-"callback" 

http://jsfiddle.net/HWCVD/16

于 2012-05-14T18:33:00.943 に答える