2016-05-04 21 views
0

関数の影響を受ける可能性のある変数のリストを取得する方法は?関数呼び出しの影響を受ける変数

はのは、私は次のコンストラクタを持っている想像してみましょう:

var myInstance = new function(){ 
    var that = this; 
    that.a = 5; 
    that.b = {t:33:g:"fff"}; 
    that.c = "param"; 
    that.myCoolFunc = function(){ 
     that.a = 100; 
     if(something){ 
      b.t = 1; 
     } 
     // Whatever some other operations 
    } 
    } 

は、関数が潜在的に(変化)に影響されます変数のリストを取得するにはmyInstance.myCoolFunc()を呼び出す前に理解するための任意の一般的な方法はありますか?

使用例:私の知る限りでは

getListOfAffectedVariables(myInstance.myCoolFunc); // will return - ["a", "b.t",...] 
+0

なしありません。 – epascarello

+0

すぐにこれが思い浮かびます:あなたが関数のコンストラクタに配列を持っていて、次にそれをビルドするときに、console.log(myInstance)の場合はどうなるのでしょうか? – Zargold

+0

パーサと同じ方法でプログラムを分析する必要があります。しかしそれでさえ、どのプロパティ(変数ではない)が影響を受けるかを決定論的に見つけることはできません。プロパティのアクセスをキャッチするオブジェクトのプロキシを作成し、その関数を呼び出して、設定されたプロパティを見つけることができます。ところで、私はあなたが 'that.b.t'を意味すると思います。そして、あなたは 'new myInstance()。myCoolFunc()'を意味します。また、なぜあなたは 'それ 'を全く使っていないのですか? –

答えて

1

ありません。

このような情報に関する関数本体のメタデータはありません。

関連する問題