2017-01-14 9 views
-1

JavaScriptには一般的な問題があります。私は別の方法で私のプロジェクトで関数に使用される長い引数を構築しようとしています。最後に、私は必要な引数を持つStringを生成することができますが、parametresとしてメソッドに挿入することはできません。私がすると、私は使用しているAPIとは異なるエラーが発生します。問題は、メソッドにいくつかのパラメータがあり、引数を生成するメソッドを挿入すると、メソッドはそれらの引数を長いStringとして扱うだけです。私はeval()とString()メソッドを使ってみましたが、成功しませんでした。文字列を関数の引数として使用する(JavaScript)

コンソールを使用してすべてをステップバイステップで実行すると、それらの引数を生成して手動で動作させることができるため、生成された引数が正しいことが分かります。

ブラウザに挿入された文字列を「メソッドですでに書かれたコード」として扱う方法を教えてもらえますか?

コードを含めてくれてありがとうございます。まだ誰にも公開できません。

編集:コードは次のようになります :

function buildArguments(args) { 
    var title='Something'; 
    var interval=1; 
    var type='Something'; 

    var build = '{title: {text: "' + title + '"},' + 
     'axis: { interval: ' + interval + '}, ' + 
     'dataType: { type: "' + type '"}};' 
    return build;} 

function graph(args) { 
    var graph = new MyGraphAPI.Create(buildArguments(args)); 
    graph.chart();} 

、それはこのようなものを作成する必要があります。

var graph = new MyGraphAPI.Create(
    { 
     title: {text: "Something"}, 
     axis: {interval: 1}, 
     dataType: {type: "Something"}; 
    } 
); 

それは私がコードの中に書かれてきた、いくつかのミスがあることが可能ですただ例として急いでください。しかし、あなたはその考えを得るべきです。

Edit2:ビルド関数のこれらの引数は、最終的なメソッドの引数の最後の文字列を作成する際に使用されることも付け加えておきます。

+4

コードの種類がどのようなものかの例を教えてください。 – zfrisch

+0

ユースケースを教えてください。 – Teemu

+0

*デバッグのヘルプを求める質問(「なぜこのコードは動作しないのですか?」)**は、必要な動作、特定の問題またはエラー、および質問自体にそれを再現するのに必要な最短コードを含める必要があります。 "それを誰にも見せることはできません"とし、予想される入力と出力に沿って原則を示すテストケースを作成します。 – Quentin

答えて

0

文字列をオブジェクトに変換する必要があります。ような何か:

callfunc(eval("{a:1,b:2}"));//equals callfunc({a:1,b:2}) 

あなたが複数の引数を渡したい、と彼らは配列にしている場合は、あなたが行うことができます:

callfunc(...["arg1","arg2"]); //equals callfunc("arg1","arg2"); 

一緒に両方:

callfunc(...eval("['arg1',{someobjval:1,someabjvaltwo:2}]")); 

しかし、これは悪いですスタイル。なぜあなたは文字列が必要ですか?あなたはオブジェクト/アレイを構築できませんか?

関連する問題