JavaScript toString方法原理

4877 ワード

本稿では、String方法を簡単に紹介します.
Stringメソッドの役割は、オブジェクトの文字列形式を返すことである.私たちはやはり異なるタイプのデータに分けて議論します.
1.Srting、文字列タイプの直接元の値を返します.
'123'.toString(); // "123"
''.toString(); // ""
2.Boolean、ブール値タイプは対応する文字形式を返します.
true.toString(); // 'true'
false.toString(); // 'false'
3.Number、数値の種類はちょっと複雑です.
  • a.NaNに対して、 Infinity、-Infinityは、文字形式に戻ります.
    NaN.toString(); // 'NaN'
    Infinity.toString(); // 'Infinity'
    
    +Infinity.toString(); // Infinity
    (+Infinity).toString(); // 'Infinity'
    
    (-Infinity).toString(); // '-Infinity'
    -Infinity.toString(); // -Infinity
  • b.整数には、引用符を付けて直接返します.ToSteringメソッドを直接呼び出すとエラーが発生します.整数の後の点は小数点と識別されますので、括弧を入れるといいです.
    123.toString(); // Uncaught SyntaxError: Invalid or unexpected token
    (123).toString(); // '123'
  • c.浮動小数点に対して、直接toStringメソッドを呼び出して、直接引用符を付けて返すことができます.
    1.23.toString(); // '1.23'
  • d.いくつかの前に正負号がある数値に対して、括弧を入れてtoStringメソッドを呼び出します.そうでないと、先にtoString()の方法を実行してから、プラスとマイナスの番号を追加して、陰で数字に変換します.
    +1.23.toString(); // 1.23
    (+1.23).toString(); // '1.23'
    
    -1.23.toString(); // 1.23
    (-1.23).toString(); // '-1.23'
  • e.数値タイプのtoString方法は、変換ベース数(radix)を示す任意のパラメータを受信することもできる.このパラメータを指定しないと、変換規則は10進数に基づいています.
    NaN.toString(2); // 'NaN'
    Infinity.toString(2); // 'Infinity'
    
    (17).toString(); // '17'
    (17).toString(2); // '10001'
    (17).toString(8); // '21'
    (17).toString(8); // '11'
  • 4.nullとundefined、toString方法がなく、直接呼び出しはエラーが発生しますが、コール方法が使えます.
    null.toString(); //   
    Object.prototype.toString.call(null) // "[object Null]"
    
    undefined.toString(); //   
    Object.prototype.toString.call(undefined) // "[object Undefined]"
    5.複合タイプ、戻り 「[object] タイプライター  type は、オブジェクトの種類です.配列、関数、Dateオブジェクトは、それぞれカスタムtoString方法を配置し、Object.prototype.toString方法をカバーしている.
  • a.内蔵のオブジェクトとカスタムのオブジェクトは、「[object]」に戻ります. Object"";
    Object.prototype.toString(); // "[object Object]"
    
    const obj = {
        name: 'josavion',
    };
    obj.toString(); // "[object Object]"
    
    function Person() {
        this.name = 'josavion';
    }
    const person = new Person();
    person.toString(); // "[object Object]"
    Person.toString(); /* "function Person() {
                            this.name = 'josavion';
                          }" */
    
    Object.toString(); // "function Object() { [native code] }"
  • b.関数Functionタイプは、関数コードを返します.
    function test(){
        console.log('test');
    }
    test.toString(); /* "function test(){
                            console.log('test');
                         }" */
    
    const haha = () => {};
    haha.toString(); // "() => {}"
    
    Function.toString(); // "function Function() { [native code] }"
  • c.配列Arayタイプは、配列内の各値の文字列形式でスティッチングされたカンマ区切りの文字列を返します.
    [].toString(); // ""
    [1, 2, 3].toString(); // "1,2,3"
    Array.prototype.toString(); // "" (   toString      )
    
    Array.toString(); // "function Array() { [native code] }"
  • d.時間Dateタイプは、現在のタイムゾーンの時間を表す文字列表現を返します.
    (new Date()).toString(); // "Wed Jun 24 2020 17:22:01 GMT+0800 (      )"
    
    Date.toString(); // "function Date() { [native code] }"
  • e.正規表現RegExpタイプは、正規表現の文字列表現の文字列の量を返します.
    /xyz/i.toString(); // "/xyz/i"
    
    RegExp.toString(); // "function RegExp() { [native code] }"
  • f.エラーErrタイプ.
    const err = new Error('test');
    err.toString(); // "Error: test"
    
    Error.toString(); // "function Error() { [native code] }"
  • 6.toString()の応用.Object.prototype.toString方法は、オブジェクトの種類の文字列を返しますので、値の種類を判断するために使用することができます.例示的なオブジェクトは、toString方法をカスタマイズし、Object.prototype.toString方法をカバーすることができるので、タイプの文字列を得るためには、Object.prototype.toString方法を直接使用することが望ましい.関数call法により、この方法は任意の値で呼び出すことができ、この値の種類を判断するのを助けてくれます.
  • 値:[object Number]を返します.
  • 文字列:[object String]を返します.
  • ブール値:[object Boolean]を返します.
  • undefined:[object Undefined]を返します.
  • null:[object Null]を返します.
  • 配列:[object Array]を返します.
  • アーグメンントオブジェクト:[object Arguments]を返します.
  • 関数:[object Function]を返します.
  • Errオブジェクト:[object Error]を返します.
  • Dateオブジェクト:[object Date]を返します.
  • RegExpオブジェクト:[object RegExp]を返します.
  • 他のオブジェクト:[object Object]を返します.