1

次のようなことを行うことで、特定のjsオブジェクトに属するすべての関数とパラメーターのリストを取得できます:-

x = IDBKeyRange.only(43); for ( var each in x ) { console.log(each, x[each]); }

各関数が受け入れる引数の数など、関数に関する詳細情報を取得する方法はありますか?

4

3 に答える 3

3

関数のlengthプロパティは、宣言内の仮パラメーターの数を示しますが、関数が受け入れるパラメーターの数と必ずしも同じではありません。いくつかの静的/動的分析を除いて、実際には把握できません。

関数の.toString()メソッドはソース コードを返します。(これは標準ではありませんが、私が知っているすべての環境でそのように機能します。もちろん、「組み込み」関数のソースを取得することはできません。)また、実験的/診断/デバッグコード以外のものを機能させようとしています実行時に関数のソース コードを調べると、おそらくいくつかの重大な設計上の問題が示されます :-)

于 2013-02-11T14:29:21.177 に答える
2

次のようなことを行うことで、特定のjsオブジェクトに属するすべての関数とパラメーターのリストを取得できます:-

これにより、オブジェクトの列挙可能なプロパティが得られますが、これには多くのものが含まれていない可能性があります。たとえば、配列でそれを行う場合、それはpush列挙できないプロパティであるため表示されません (この場合は配列のプロトタイプのプロパティですが、独自のプロパティと継承されたプロパティの両方に適用されます)。

各関数が受け入れる引数の数など、関数に関する詳細情報を取得する方法はありますか?

関数インスタンスのlengthプロパティを使用して、関数のアリティ (宣言された引数の数) を取得できます。例えば:

console.log("The arity of [].push is " + [].push.length);

ただし、JavaScript 関数はargumentsobjectを介して可変数の引数を受け入れる可能性があるため、アリティだけでは完全な説明が得られない可能性があることを覚えておくことが重要です。

于 2013-02-11T14:29:53.113 に答える
0

Webブラウザでデバッグモードを実行できます。jquery修飾子を使用してオブジェクトにアクセスします。

于 2013-02-11T14:42:38.893 に答える