2017-09-14 15 views
2

ちょっと私はJSの新機能で、関数もオブジェクトであることがわかりました。 これは私がこのようにそれらにプロパティを追加することができます意味:JavaScriptのオブジェクトとしての機能

let func = function(){}; 
func.foo = "foo"; 
console.log(func.foo); // prints foo 

私たちは今、これを行うしかしとき:

console.log(func); 

それは(クロムを使用して)返します:

enter image description here

通常、他のタイプのオブジェクトに表示されているように、オブジェクトのプロパティを表示しないのはなぜですか?また 例えば、我々は(機能)にconsole.logしようと、それは次のような出力を返します。

enter image description here

このネイティブコードとは何ですか?私がother sourcesから得たのは、このコンストラクタの機能をプログラムした別のプログラミング言語(C、C++)で書かれたコードであるということでした。

ありがとうございます!

+3

Google Chromeのコンソールが 'function'型の要素をどのように記録するのかということであるからです。 –

+1

...オブジェクトのように表示させたい場合は(そのプロパティを見ることができるので) 'log'の代わりに' dir'を使います: 'console.dir(func);' –

+0

@ibrahimmahrirあなたは ' console.log(Object.assign({}、func)); ' –

答えて

4

Chromeのコンソールでは、プロパティの代わりにプロパティの本体が表示されるため、通常はより便利です。

Screenshot of non-empty function in Chrome console

図示すべきJavaScriptの体が存在しない場合、それは確かに[native code]に置き換えます:それはあなたが空の関数を使用しない時に伝えるためにはるかに簡単です。

@イブラヒムmahrirポイントうち、デフォルトの検査およびプロパティの拡張可能なリストの両方を取得するためにconsole.dir(func)を使用することができたよう。

関連する問題