zoukankan      html  css  js  c++  java
  • toString()方法详解

    在类型转换中,经常用到方法valueOf()和toString(),上一篇讲了valueOf()方法,这一篇来说说toString()方法。toSting()方法返回返回对象的字符串表现。

    【1】基本包装类型——Boolean型

    var obj = new Boolean(true);
       console.log(obj.toString());//"true"
       console.log(typeof obj.toString());//string
       //如果是包装类型的基本类型,则返回原基本类型值
        var a = true;
       console.log(a.toString());//"true"
       console.log(typeof a.toString());//string

    如果是基本包装类型对应的基本类型,会返回原值。但这并不代表基本类型拥有toString()方法(基本类型不是对象,不拥有任何方法),而是在读取一个基本类型值时,后台会创建一个对应的基本包装类型的对象,从而调用一些方法。所以,基本类型“调用”toString()方法时,实际上是先创建了一个对应的基本包装类型,由此基本包装类型调用toString()最后返回了其对应的字符串,看起来就好像是基本类型调用了toString()方法而得到了对应的字符串。

    【2】基本包装类型——String型

       var obj = new String("hello");
       console.log(obj.toString());//hello
       console.log(typeof obj.toString());//string
       //如果是包装类型的基本类型,则返回原基本类型值
        var a = "hello";
       console.log(a.toString());//hello
       console.log(typeof a.toString());//string

    同【1】,String基本包装类型和基本类型调用toString()方法都返回对应的字符串

    【3】基本包装类型——Number型

       var obj = new Number("123");
       console.log(obj.toString());//123
       console.log(typeof obj.toString());//string
       //如果是包装类型的基本类型,则返回原基本类型值
        var a = 123;
       console.log(a.toString());//123
       console.log(typeof a.toString());//string

    同【1】,Number基本包装类型和基本类型调用toString()方法都返回对应的字符串。

    注意,如果直接用整数调用时,要加上括号,否则会报错。因为整数后面的点会识别为小数点。浮点型不会报错。

    console.log(123.toString());//Uncaught SyntaxError
       console.log((123).toString());//"123"
       console.log(12.3.toString());//"12.3"

    此外,数字类型的toString()方法可以接收表示转换基数(可选,2-36中的任何数字),如果不指定此参数,转换规则将是基于十进制。

    var n = 33;
    console.log(n.toString());//'33'
    console.log(n.toString(2));//'100001'
    console.log(n.toString(3));//'41'
    console.log(n.toString(10));//'33'
    console.log(n.toString(16));//'21'
    console.log(n.toString(37));//Uncaught RangeError: toString() radix argument must be between 2 and 36

    【4】数组Array类型(返回数组内容组成的字符串)

       var a = [1,2,3,4];
       console.log(a.toString());//"1,2,3,4"
       console.log(typeof a.toString());//string

    【5】函数Function类型(返回函数代码字符串)

       var a = function(){};
       console.log(a.toString());//"function(){};"
       console.log(typeof a.toString());//string

    【6】正则RegExp类型(返回原正则表达式的字符串表示)

    var a = /a/g;
       console.log(a.toString());///"a/g"
       console.log(typeof a.toString());//string

     【7】Date类型(返回表示当前时间的字符串)

       var obj = new Date();
       console.log(obj);//Wed May 10 2017 18:20:05 GMT+0800 (中国标准时间)
       console.log(typeof obj);//object
       console.log(obj.toString());//"Wed May 10 2017 18:20:05 GMT+0800 (中国标准时间)"
       console.log(typeof obj.toString());//string

     【7】对象Object类型及自定义对象类型(返回[object Object])

    var obj = {a:1};
       console.log(obj.toString());//"[object Object]"
       console.log(typeof obj.toString());//string
       function Foo(){};
       var foo = new Foo();
       console.log(foo.toString());//"[object Object]"
       console.log(typeof foo.toString());//string

    在判断对象的类型时,用Object.prototype.toString()返回字符串“[object 对象类型]”,但无法判断自定义对象的类型。

    小结

    1)undefined和null没有此方法(基本类型肯定没有方法,String、Number和Boolean是因为有对应的基本包装类型,才可以调用方法);

    2)Date类型返回表示时间的字符串;

    3)Object类型返回字符串“[object Object]”。

    与valueOf()对比

    1)toString()和valueOf()的主要不同点在于,toString()返回的是字符串,而valueOf()返回的是原对象

    2)由于undefined和null不是对象,所以它们toString()和valueOf()两个方法都没有

    3)数值Number类型的toString()方法可以接收转换基数,返回不同进制的字符串形式的数值;而valueOf()方法无法接受转换基数

    4)时间Date类型的toString()方法返回的表示时间的字符串表示;而valueOf()方法返回的是现在到1970年1月1日00:00:00的数值类型的毫秒数

    5)包装对象的valueOf()方法返回该包装对象对应的原始值

     与转型函数String()函数的对比

    toString()和String()都是将数据转换为对应的字符串,有如下区别:

    1)String()可以将任何类型的值转换为字符串,包括undefined和null;

    console.log(String(null));//"null"
    console.log(String(undefined));//"undefined"

    2)String()不能接受数值基数作为参数

  • 相关阅读:
    Windows Server安装Oracle11g R2过程记录
    SQLServer 角色说明-服务器级别角色数据库级别角色
    【windows】【应用】必备软件安装
    程序员修炼之道系列 | 无情的测试
    程序员修炼之道系列 | 版本控制
    程序员修炼之道系列 | 死掉的程序不会说谎
    程序员修炼之道系列 | 可逆性
    TS中 使用deprecated 实现对方法的迭代弃用
    shell脚本(16)-awk命令
    shell脚本(15)-sed命令
  • 原文地址:https://www.cnblogs.com/youhong/p/6837534.html
Copyright © 2011-2022 走看看