彻底了解toString和valueOf区别

toSring和valueof 两者都是对象的方法!前者返回对象的字符串,后者返回对象的原始值,如果没有原始值则返回对象本身!

1.toSring()

直接看代码

console.log((1).toString());//1
console.log((10).toString(2))//1010
console.log(("1").toString());//1
console.log((false).toString());//false
console.log(({p:1}).toString());//[object,object]
console.log((undefined).toString());//报错
console.log((null).toString());//报错
console.log((function(){}).toString());//function(){}
console.log([1,2,3,4].toString());//1,2,3,4
console.log((new Date()).toString())//Fri Jul 03 2020 17:20:11 GMT+0800 (中国标准时间)

由于是对象的方法,所以必须要是对象,由于1,“”1“”之前上篇文章说下,他是实例化出来的对象,只不过包装对象自己内部做了处理,生命周期很短,但是它原型上仍然有toString方法,不懂的可以点击这里!数组的这里也有个坑,数组也是对象,为什么对象返回是[object,object],而数组返回的是对应的字符串,其实数组覆盖了Object.toString方法,然后将连接数组并返回一个字符串,其中包含用逗号分隔的每个数组元素(相当于Array.join())!

var test= Object.prototype.toString;
console.log(test.call(1));//[object Number]
console.log(test.call("1"));//[object String]
console.log(test.call(false));//[object Boolean]
console.log(test.call({p:1}));//[object object]
console.log(test.call(undefined));//[object undefined]
console.log(test.call(null));//[object null]
console.log(test.call(function(){}));//[object Function]
console.log(test.call([1,2,3,4]));//[object Array]
console.log(test.call(new Date()));//[object Date]
console.log(test.call(new RegExp()));//[object RegExp]

Object.prototype.toString.toString()能够很好的判断数据的类型及内置对象

2.vauleOf()

也先看代码吧

console.log((1).valueOf());//1
console.log((10).valueOf(2))//报错
console.log(("1").valueOf());//1
console.log((false).valueOf());//false
console.log(({p:1}).valueOf());//{p:1}
console.log((undefined).valueOf());//报错
console.log((null).valueOf());//报错
console.log((function(){}).valueOf());//function(){}
console.log([1,2,3,4].valueOf());//[1,2,3,4]
console.log((new Date()).valueOf());//1593767848260

如果对象没有原始类型值就不作处理,直接返回对象本身!这里new Date()返回的是一堆数字,而toSring返回的是中文字符串!

总结:

1.toString()返回的是字符串,而valueOf()返回的是原始值,没有原始值返回对象本身
2.undefined和null都没有toString()和valueOf()方法
3.Date类型的toString()返回的表示时间的字符串;valueOf()返回的是现在到1970年1月1日的毫秒数
4.Number类型的toString()方法可以接收转换基数,返回不同进制的字符串形式的数值;而valueOf()方法无法接受转换基数
5.Object.prototype.toString.toString()能够很好的判断数据的类型及内置对象

  • 10
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: valueof()和tostring()是Java编程语言中两个常用的方法。它们的区别在于: 1. valueof()方法是将一个基本类型的值或一个对象的值转换为其对应的包装类对象。例如,可以使用Integer.valueOf(10)将int类型的10转换为Integer对象。而tostring()方法是将一个对象转换为字符串类型的表示形式。 2. valueof()方法是静态方法,可以通过类名直接调用,而tostring()方法是非静态方法,需要通过对象调用。 3. valueof()方法返回一个包装类对象,而tostring()方法返回一个字符串对象。 总之,valueof()方法是将基本类型或对象转换为包装类对象,而tostring()方法是将对象转换为字符串类型的表示形式。 ### 回答2: valueoftostring是Java中的两个方法,它们之间有一些区别。 首先,valueof是一个静态方法,它用于将其他数据类型转换为字符串类型。这意味着我们可以使用valueof方法将整型、浮点型、布尔型等其他数据类型转换为字符串类型。例如,我们可以使用Integer.valueof(10)将整数10转换为字符串"10"。 相反,tostring是一个非静态方法,它用于将对象转换为字符串类型。这意味着我们可以使用tostring方法将任何对象转换为字符串类型。它是在Object类中定义的,因此所有的类都继承了tostring方法。默认情况下,tostring方法返回一个包含对象类名及其哈希码的字符串。我们可以根据需要在子类中重写tostring方法,以返回自定义的字符串表示形式。 其次,valueof方法通常用于将基本数据类型转换为字符串,而tostring方法常用于将对象转换为字符串。当我们需要在字符串中显示对象的内容时,会使用tostring方法。例如,如果我们有一个名为Person的类,我们可以在tostring方法中返回该对象的姓名和年龄,以便在使用时更方便。 总结来说,valueof方法用于将其他数据类型转换为字符串类型,而tostring方法用于将对象转换为字符串类型。两者的使用场景略有区别,但都能实现将数据转换为字符串的功能。 ### 回答3: valueoftostring都是Java中用来将不同类型的数据转换为字符串的方法,但它们的用途和实现方式有所不同。 valueof是一个通用的方法,它可以用于所有的Java对象。当调用一个对象的valueof方法时,它会返回一个表示该对象的字符串。该方法会根据对象的具体类型进行处理,因此可以将不同类型的对象转换为对应的字符串表示形式。例如,对于一个整数对象,它的valueof方法会返回该整数的字符串表示。 tostring方法则是每个Java对象都具有的方法。当调用一个对象的tostring方法时,它会返回一个表示该对象的字符串。tostring方法的实现一般需要在每个具体的类中进行定义。通常,tostring方法会返回该对象的类名,后面跟随一些相关的属性或信息。这样可以方便地将对象的内部状态以字符串的形式输出,以便进行调试或日志记录等操作。 综上所述,valueof方法是用于将对象转换为字符串的通用方法,而tostring方法是每个Java对象都具有的方法,用于返回该对象的字符串表示。两者的实现方式不同,tostring方法一般需要在具体的类中实现,而valueof方法是Java提供的一个通用方法。根据具体的需求,我们可以选择使用其中之一。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值