2

3時間から、ユーザーが到達可能/作成した関数のリストを返すJavascript関数の作成を検索します。

残念ながら何も見つかりません…。

Google V8 Javascriptエンジンでこれを行う方法を知っていますか?

PS: 私の英語でごめんなさい、私はフランスの学生です :D

4

3 に答える 3

2

デフォルトでは、オブジェクトのメソッドとして宣言されていない関数は、ウィンドウ オブジェクトのメソッドと見なされることに注意してください。

したがって、以下のコードのようなものを使用すると、window オブジェクトのすべての関数を一覧表示できます。出力を検査し、より良いフィルターを追加して、ここで盗んだ isFunction 関数を改善できます。

<script type="text/javascript">

        function myTest() //function to be detected
        {
            return true;
        }

        function isFunction(functionToCheck)
        {
            var getType = {};
            return functionToCheck && getType.toString.call(functionToCheck) == '[object Function]';
        }

        for( var it in window )
        {
            if(isFunction(window[it]))
                console.log(it+":"+window[it]);
        }


    </script>
于 2012-08-03T10:50:07.150 に答える
2

現在の関数または変数のリストをプログラムでスクレイピングする方法はありません。

少なくとも、これらの関数がどこにあるのかを知る必要はありません。たとえば、特定の名前空間などです。

var fn = {};
fn.someFunc = function(){}
fn.someProp = 'foo';
fn.someOtherFunc = function(){}

//get all funcs
for (var i in fn) if (typeof fn[i] == 'function') alert('found a function');
于 2012-08-03T10:37:43.047 に答える
1

多分私はあなたを助けることができます。この呼び出しは、グローバル コンテキストから始めて、すべてのオブジェクトで上から下に移動します。最初の関数は、自由範囲のオブジェクトがあるグローバル オブジェクトを返します。そして、各オブジェクト検索で再帰を行い、関数または必要なものを探します。

var global = (function(){return this;})();

(function(ctx){
  for(var i in ctx) { 
   // put your function check here.
   // System.out.println(i + ' ' + typeof ctx[i]); 
   if(ctx[i] instanceof Object) { 
     arguments.callee(ctx[i]); }
  }
})(global);

その場でコードを実行する

于 2012-08-22T21:12:29.383 に答える