2016-05-23 17 views

答えて

-1

をしたい場合は、信頼できるブラウザ&コンソールバージョンの説明です。
これは、あなたがあなたの同じコードからIE10コンソール上で、例えば、買ってあげるものです:

function F1() { return {}; }; 
function F2() { }; 

[F1(), new F2()]; 

>> [object Object],[object Object] { 
    0 : [object Object], 
    1 : [object Object] 
} 
+0

しかし、どのようにChromeで同じ結果を得る:[F1、F2] '新しい'コマンドなし? – j0101

+0

ブラウザコンソールのオブジェクト項目の説明に影響を与えることはできません。 F1とF2は異なるオブジェクトなので、あなたの要求は無意味です。 –

0

toStringメソッドをオーバーライドします。

MDN docs

+1

これはクロムコンソールの動作には影響しないようです。 – nils

1

JavaScriptでコンストラクタは単なるオブジェクトであり、それらはnewキーワードで初期化することができます。したがって、F1()は単なる関数呼び出しであり、new F2()は新しいオブジェクトを作成する方法です。あなたは見ることができます

:それはオブジェクトとして戻り値を持っているので

function F1() { return {}; } // <----not a constructor method 
function F2() { } // <---------------This can be a constructor method 

F1()はここでコンストラクタメソッドではありません。戻り値を持つコンストラクタを持つことはできません。

F2()は戻り値がないため、コンストラクタとして使用できます。

+0

なぜ 'F1'はコンストラクタではありませんか? – nils

3

あなたは、F1を呼んで、戻りオブジェクト{}であることは本当だ!!! ..しかし、uはI need to the behavior of F1 was similar to F2.

function F1() { return this;} //or {} 
function F2() { return this;} //or {} 

[new F1(), new F2()]; // [F1,F2] 
関連する問題