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

【8】对象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"
  1. String()不能接受数值基数作为参数

作者:另一只小白 链接:https://www.jianshu.com/p/9ba718d642ea 来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 C# 中,ToString() 方法是一个非常常用的方法,它允许将一个对象转换成字符串形式。以下是一些关于 C# ToString() 方法的详细解释: 1. ToString() 方法是从 Object 类继承而来的。因此,每个对象都有一个 ToString() 方法,即使你没有显式地在自己的类中定义它。 2. 默认情况下,Object 类中的 ToString() 方法返回一个包含类名的字符串。例如,一个 Person 类的 ToString() 方法将返回 "Person"。 3. 我们可以在自己的类中重写 ToString() 方法,以便输出我们需要的字符串形式。这个方法应该返回一个字符串,它描述了对象的状态。 4. 通常,ToString() 方法用于将对象转换为易于阅读和输出的字符串形式,以便于调试和测试。 5. 当我们在使用 Console.WriteLine() 方法等将对象输出到控制台时,ToString() 方法会自动被调用。例如: ```csharp Person person = new Person { Name = "John", Age = 30 }; Console.WriteLine(person); ``` 在上面的代码中,我们输出了一个 Person 对象,但是并没有显式地调用 ToString() 方法。但是,由于 Console.WriteLine() 方法需要将对象转换成字符串形式,因此它会自动调用 ToString() 方法。 6. 在重写 ToString() 方法时,我们应该注意避免出现异常,因为 ToString() 方法通常会被其他代码频繁调用。如果 ToString() 方法抛出异常,那么可能会影响整个应用程序的正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值