javascript
  • function
  • 2012-04-13 6 views 0 likes 
    0

    文字列を取ることができるかどうか聞いてみましたが、これは常に定数であり、関数の名前をその文字列に追加します。 例:javascriptでは、関数名に文字列を追加することはできますか?

    function modifyFunctionName(theFunc) 
    { 
        var newFunc = "link" +theFunc; 
        return newFunc; 
    } 
    //Somewhere in the HTML: 
    <input type='submit' value='button' onclick='modifyFunctionName(CheckLogin())'/> 
    

    のでmodifyFunctionNamelinkCheckLogin()を返します。

    EDIT:質問に基づいてhttps://gist.github.com/2371187

    +3

    あなたは何をしようとしていますか? –

    +2

    XY問題(http://mywiki.wooledge.org/XyProblem)の候補に似ています。あなたは本当に何をしようとしていますか? –

    +0

    OPは、 'CheckLogin()'戻り値に依存して、 'button'に別のイベントハンドラ関数を割り当てたいと思うようです。 – Teemu

    答えて

    1

    これは技術的に可能かもしれませんが、evalを使用する必要があり、それは良い考えではありません。あなたができることは、オブジェクトを作成し、関数への参照を格納することだけです。同じように動作します。

    var obj={}; 
    
    function addFunction(name,func){ 
        obj[name]=func; 
    } 
    
    function changeName(oName,nName){ 
        obj[nName]=obj[oName]; 
        delete obj[oName]; 
    } 
    
    addFunction('test',function(){return 'hi'}); 
    obj.test();//returns 'hi' 
    changeName('test','greet'); 
    obj.greet();//returns 'hi' 
    
    0
    <script> 
    
        function one() { 
         alert("one"); 
        } 
    
        eval("function two() { one();}"); 
        two(); 
    
    </script> 
    
    0

    :申し訳ありませんが、みんなが実際にどのような私は正確にやろうとしたが、このだった それはあなたが、とにかく、するつもり何を非常に明確ではありません、あなたは何をevalのことができますこれはスコープに添付されています:

    myFunction(aString){ 
    // window is the scope , the context. 
    window[aString] = myFunction ; 
    } 
    

    質問はなぜですか?

    関連する問題