コンソールAPIを変換するタイプが存在しないですので、標準のAPIを意味するが、すべてのブラウザに実装されているものなので、ベンダーは通常、APIのメソッドの出力を定義する標準仕様がないため、独自の方法で実装する自由があります。
特定のブラウザのコンソールAPIの実際の実装を確認しない限り、決して確実ではありません。 GitHubには、主要なブラウザの実装の違いをリストしたtrackerがあります。
あなたはFFでの実装を見てみると(利用可能here - ログの検索が)、それは
以下のコメントを持っている人間が使用するために設計されたオブジェクトの複数行文字列化、
実際の実装では、log()
に渡される引数の型がチェックされ、その型に基づいて異なる表現が生成されます。彼らは二つの異なるtypes
があるため
あなたの場合、log()
プリントString
コンストラクタを使用して作成したliteral
表記法を使用して作成した文字列と文字列の2つの異なる値に来ます。 hereで説明したように、リテラル表記を使用して作成されたストリングはString Primitives
と呼ばれ、ストリングコンストラクターを使用して作成されたストリングはString Objects
と呼ばれます。
var str1 = 'test';
var str2 = new String('hello');
typeof str1 // prints "string"
typeof str2 // prints "object"
タイプが異なるため、コンソールAPIでは文字列表現が異なります。あなたはFFのコンソールを実装するためのコードを通過する場合は、最後の文は、だからあなたの質問に答えるために
return " " + aThing.toString() + "\n";
で、FFでのコンソールAPIは、引数の型が{undefined,null,object,set,map}
タイプのいずれかでない場合にのみ、引数にtoString()
を呼び出します。必ずしもtoString()
またはvalueOf()
のメソッドを呼び出すとは限りません。私はChromeの実装をチェックしなかったので、私はそれについてコメントしません。それはのtoStringを利用しない
ような何かを行うことができますか? – Roberto
@Robertoいいえ、Mozzilaに限られていません。 – gurvinder372