2017-05-22 5 views
0

はJavaScriptでは、関数は、ファーストクラスのオブジェクトである

参考:Functions関数のプロパティとメソッドを取得する方法は?彼らは他のオブジェクトと同様のプロパティとメソッドを持つことができるので、


そのため、取得するためにどのように機能する方法単純なオブジェクトがconsole.log(testObj)にキャッチされると、すべての詳細がブラウザコンソールに表示されます。
そのまま、機能を取得する方法オブジェクトの詳細機能の詳細を取得しようとすると


:ちょうど、署名を返すfunction foo()以上

function foo() { 
    var a = 2; 
    return a; 
}; 

console.log(foo); 

例:console.log(document);

+0

私が間違っている可能性が、私は(fooの中のvarプロパティ)のために 'コメントでそれを投げていますので、それだけで推測だ{場合(foo.hasOwnProperty(プロパティ)){}}は'反復処理する方法ですあなたがIE <9 –

+0

をサポートしたい場合、オブジェクトのプロパティを通して 'console.log( '%O'、foo);'を試してください。 ['%O'フォーマッタ](https://console.spec.whatwg.org/#formatter)(3.e)は、汎用オブジェクトとして機能を表示するようにコンソールに指示する必要があります。 –

+0

@ jonathan-lonowskiの結果は、コンソールに引数を渡すだけで、上と同じ結果になります。 –

答えて

1

使用console.dir()。それは一般的に展開可能なツリービューとして、そのプロパティとその値をリストしています確保、引数as a generic objectを表示するには、コンソールに指示し

console.dir(foo); 

  1. オブジェクトが適用さgeneric JavaScript object formattingと項目とします。サポートしているブラウザで

%O formatterは同じ結果が得られます。

console.log('%O', foo); 
+0

私は 'console.log(foo.prototype)'を試してみました。確認して答えに加えてください! –

+1

@forweb関数が他のオブジェクトのコンストラクタとして使用されている場合に役立ちます。また、 'prototype'は' console.dir(foo); 'からブラウズ可能です。 –

2

あなたの関数は何の性質を持っていません。

独自の列挙型プロパティを取得するには、Object.keysを使用できます。 documentのすべてのプロパティのために

function foo() { 
 
    var a = 2; 
 
    return a; 
 
}; 
 
foo.bar = function (x) { console.log(x); }; 
 
foo.baz = 42; 
 

 
console.log(Object.keys(foo)); 
 
console.log(foo.toString());

、あなたはfor ... inステートメントを使用することができます。

var k; 
 
for (k in document) { 
 
    console.log(k); 
 
}

+0

注: 'Object.keys()'はES5で定義されており、一部の(ただし古くなったにもかかわらず)ブラウザでは使用できない場合があります。ソース:[Object.keys()MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys) –

+0

@Nina Scholz、確かに、私は試しています。 'console.log(document)'のように、ブラウザのコンソールですべての詳細を取得するには、すべてのメソッド、プロパティなどがそこにあります。 –

+0

@ Nina-Scholzさて、プロパティを一つずつ取得する方法は言いませんが、私は 'console.log(document)'や 'console.log(anyObject)'の動作を尋ねています。 –

0

変数としての機能を考えます。 Javascriptは、呼び出されると宣言された全体をあなたに与えます。変数を取得するには、関数で宣言されている変数を変更する必要があります。例については :console.log()の代わりに

var a = 2; 
function foo(){ 
    a = 4; 
} 
console.log(a); //would give you the desired result. 
関連する問題