console.logはオブジェクトのtoStringメソッドを呼び出しますか?

gurvinder372:

このドキュメントに従って

これらの各オブジェクトの文字列表現は、リストされた順序で一緒に追加され、出力されます。

また回答通り

+ xは、オブジェクトxを文字列に強制変換します。これは単なる[オブジェクトオブジェクト]です。

だから、私の質問は

私が行った場合

str = new String("hello")
console.log(str) //prints the string object but not 'hello'
console.log(""+str) //prints "hello"

したがって、最初のケースでは、オブジェクトを出力するだけです(toString()メソッドを呼び出さない)。

しかし、2番目のケースでは、強制せず、単純にプリミティブ値を出力します。どうしてこんなことに?

console.logオブジェクトを印刷するために呼び出すメソッドはどれですか?

これはこの質問の複製ではないことに注意してください

友達:

コンソールAPIは、仕様で定義されている標準のAPIではなく、すべてのブラウザーに実装されるものであり、APIのメソッドの出力を定義する標準の仕様がないため、ベンダーは通常、独自の方法で実装する自由があります。 。

特定のブラウザーのコンソールAPIの実際の実装を確認しない限り、確信が持てません。GitHubには、主要なブラウザーからの実装の違いをリストしトラッカーがあります。

FF(ここから入手可能-ログを検索)で実装を見ると、以下のコメントがあります。

人間が使用するために設計されたオブジェクトの複数行の文字列化

実際の実装では、渡される引数のタイプをチェックし、そのタイプにlog()基づいて、別の表現を生成します。

あなたの場合、表記法をlog()使用して作成された文字列literalStringコンストラクタを使用して作成された文字列の2つの異なる値が異なるため、これらは2 つの異なる値を出力しますtypesここ説明するように、リテラル表記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はtoString()、引数のタイプが{undefined,null,object,set,map}タイプの1つでない場合にのみ引数を呼び出します。常にメソッドtoString()valueOf()メソッドを呼び出すわけではありません私はChromeの実装をチェックしなかったので、コメントしません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Gremlin-consoleは、特定のオブジェクトで使用可能なすべてのメソッドを表示していますか?

分類Dev

ドット表記を使用して、JavaScriptの配列とオブジェクトのプロトタイプにconsole.logメソッドをどのように追加しますか?

分類Dev

console.log は、オブジェクト オブジェクトを角度のある形式で表示します

分類Dev

console.logは、Error.prototype.toStringとは異なるエラーオブジェクトをフォーマットします

分類Dev

Chrome Developer Tools Profilerは、異なる数のメソッド呼び出しとconsole.logを示しています

分類Dev

console.log()オブジェクトは、ノードjsコンソールでプロトタイプを介して追加されたメソッドをログに記録しません。または、プロトタイプを印刷する方法もありますか?

分類Dev

(Javascript)Console.logはオブジェクトの値を出力し、次の行に未定義を追加します

分類Dev

Javascript console.logは、オブジェクトの値の代わりにc()を返します

分類Dev

console.logをオーバーライドするときに、promiseオブジェクトの状態と値をどのように表示しますか

分類Dev

呼び出しメソッドのオブジェクトを取得します

分類Dev

呼び出しメソッドの「this」オブジェクトをjavascriptします

分類Dev

オブジェクトの配列内の Javascript オブジェクトは、console.log を使用して異なります

分類Dev

console.logオブジェクトをカウントします

分類Dev

console.log%oはオブジェクト引数を出力しません

分類Dev

javascriptはconsole.logをオブジェクトに割り当てます

分類Dev

オブジェクトのconsole.logをデバッグする

分類Dev

オブジェクトのすべてのメソッドを呼び出すことはできますか?

分類Dev

Windows PowerShellは、Node.jsからDateオブジェクトをconsole.logしません

分類Dev

プロキシでconsole.log()を呼び出すと、メソッドstartsWithがエラーをスローします。

分類Dev

Console.logで非オブジェクトのプロパティを取得しようとしています

分類Dev

オブジェクトのメソッドを呼び出す

分類Dev

Chromeはconsole.logオブジェクトをマスキングしています

分類Dev

js変数が[オブジェクトオブジェクト]を表示するのにconsole.log()が機能するのはなぜですか?

分類Dev

console.log()がJavaScriptで[オブジェクトオブジェクト]を出力するのはなぜですか?

分類Dev

Javascriptでは、テンプレートリテラルを使用して、オブジェクトを反復処理しながら、オブジェクトのコンテンツをconsole.logに記録できますか?

分類Dev

'is_aを呼び出すのはなぜですか?メソッドのオブジェクト 'は' true 'を返しますか?

分類Dev

未定義のメソッドApp \ Console \ Kernel :: load()の呼び出し-Laravel 5.4

分類Dev

console.logを使用してオブジェクトに値を表示する

分類Dev

オブジェクト参照をnullに設定するか、finalize()メソッドを呼び出しますか?

Related 関連記事

  1. 1

    Gremlin-consoleは、特定のオブジェクトで使用可能なすべてのメソッドを表示していますか?

  2. 2

    ドット表記を使用して、JavaScriptの配列とオブジェクトのプロトタイプにconsole.logメソッドをどのように追加しますか?

  3. 3

    console.log は、オブジェクト オブジェクトを角度のある形式で表示します

  4. 4

    console.logは、Error.prototype.toStringとは異なるエラーオブジェクトをフォーマットします

  5. 5

    Chrome Developer Tools Profilerは、異なる数のメソッド呼び出しとconsole.logを示しています

  6. 6

    console.log()オブジェクトは、ノードjsコンソールでプロトタイプを介して追加されたメソッドをログに記録しません。または、プロトタイプを印刷する方法もありますか?

  7. 7

    (Javascript)Console.logはオブジェクトの値を出力し、次の行に未定義を追加します

  8. 8

    Javascript console.logは、オブジェクトの値の代わりにc()を返します

  9. 9

    console.logをオーバーライドするときに、promiseオブジェクトの状態と値をどのように表示しますか

  10. 10

    呼び出しメソッドのオブジェクトを取得します

  11. 11

    呼び出しメソッドの「this」オブジェクトをjavascriptします

  12. 12

    オブジェクトの配列内の Javascript オブジェクトは、console.log を使用して異なります

  13. 13

    console.logオブジェクトをカウントします

  14. 14

    console.log%oはオブジェクト引数を出力しません

  15. 15

    javascriptはconsole.logをオブジェクトに割り当てます

  16. 16

    オブジェクトのconsole.logをデバッグする

  17. 17

    オブジェクトのすべてのメソッドを呼び出すことはできますか?

  18. 18

    Windows PowerShellは、Node.jsからDateオブジェクトをconsole.logしません

  19. 19

    プロキシでconsole.log()を呼び出すと、メソッドstartsWithがエラーをスローします。

  20. 20

    Console.logで非オブジェクトのプロパティを取得しようとしています

  21. 21

    オブジェクトのメソッドを呼び出す

  22. 22

    Chromeはconsole.logオブジェクトをマスキングしています

  23. 23

    js変数が[オブジェクトオブジェクト]を表示するのにconsole.log()が機能するのはなぜですか?

  24. 24

    console.log()がJavaScriptで[オブジェクトオブジェクト]を出力するのはなぜですか?

  25. 25

    Javascriptでは、テンプレートリテラルを使用して、オブジェクトを反復処理しながら、オブジェクトのコンテンツをconsole.logに記録できますか?

  26. 26

    'is_aを呼び出すのはなぜですか?メソッドのオブジェクト 'は' true 'を返しますか?

  27. 27

    未定義のメソッドApp \ Console \ Kernel :: load()の呼び出し-Laravel 5.4

  28. 28

    console.logを使用してオブジェクトに値を表示する

  29. 29

    オブジェクト参照をnullに設定するか、finalize()メソッドを呼び出しますか?

ホットタグ

アーカイブ