2016-12-23 21 views
-1

私はSCRIPT1内の関数があります:スクリプト2で関数名からjavascript関数を評価するにはどうすればいいですか?

function myFunction(arg){ 
--code JS-- 
}; 

を、私はこの関数をオーバーライドします:

var func_name = "myFunction"; 

は、どのように私はそれを無効にするために、関数名からこの関数の本体を得るために行うことができます?事前に

おかげ

+0

'VAR FUNC_NAME = myFunction' – rckrd

答えて

0
var func_name = myFunction; // without the quotes 
+0

あなたの答えとドキュメントへのリンクを提供してください。どのように動作するのかを説明してください – Blag

+0

'console.log(myFunction);'を試すと、括弧なしで関数の名前を入力すると(実行されていない)、 'myFunction'には参照が含まれていることがわかりますしたがって、それはその本体を表示し、別の変数に入れると、その変数は前の関数の本体を含んでいるため、関数にもな​​ります。ビットをクリアして、忘れました私はこれを見つけた、申し訳ありません私はリンクを提供することはできません – Taki

+0

私はこれを知っているが、[編集]あなたのポストでそれを説明する:[答え] – Blag

0

私はそれはあなたがやりたいと思っている何であるかわかりません。しかし、あなたは "どうやってこの関数の本体を関数名から取得し、それを上書きすることができますか?"これは単に.toString()のようなものです。myFunction.toString()これは 'function(){} `外部ブロックを含む関数全体を返します。

function.toString().replace(/^function\ (?:\w|\d)*\([^\)]*\)\ ?\{\ *|\ *\}$/g,"")

はしかし、機能を無効にするために、あなたはそれを再割り当てすることができます:

> function ab(){ return 1+2 } 
< undefined 
> ab() 
< 3 
> ab = function() { return 3+4 } 
< function() { return 3+4 } 
> ab() 
< 7 
0

あなたが同じ名前を使用しますが、機能、用途を変更したい場合は、本体を取得するには、正規表現を使用します代わりに無名関数:

var myFunction = function() { 
    // initial code 
} 

同じ変数に新しい機能を再割り当て:

myFunction = function() { 
    // new code 
} 

は、通常の関数のようにそれを呼び出します。できればmyFunction()

関連する問題