关于valueOf() 和 toString(),我们需要知道的事儿

以下代码均在Chrome控制台测试。

###1.valueOf()

  1. 解释:返回指定对象的原始值。
  2. 当对象需要原始值的时候,JavaScript会自动调用它。
  3. 不同类型对象的valueOf()方法的返回值
    Array 返回数组对象本身。
var a = [1];a.valueOf()
[1]

Boolean 布尔值。

var b =true;b.valueOf()
true

Date 存储的时间是从 1970 年 1 月 1 日午夜开始计的毫秒数 UTC。

var d =new Date();d.valueOf()

1533023968670

Function 函数本身。

var f = new Function();f.valueOf();
ƒ anonymous() {

}

Number 数字值。

var n = new Number();n.valueOf()
0
var n = new Number(8);n.valueOf()
8
var n = new Number('');n.valueOf()
0
var n = new Number('7');n.valueOf()
7

Object 对象本身。这是默认情况。

var o =new Object();o.valueOf()
{}

String 字符串值。

var s =new String();s.valueOf()
""
var s =new String('');s.valueOf()
""

Math对象没有 valueOf 方法,会报错:

var m = new Math();m.valueOf()

VM2102:1 Uncaught TypeError: Math is not a constructor
    at <anonymous>:1:9
(anonymous) @ VM2102:1

Error 对象:

var e = new Error();e.valueOf()
Error
    at <anonymous>:1:9
   ------------ 分割线 -------------
var e = new Error();e.toString()
"Error"

###2.toString()
4. .每个Object对象都包含该方法。
5. 当Object对象以字符串方式引用时会被自动调用,注意,是Object对象。
6. 默认调用时返回[object type]。例如:

var o = new Object();
o.toString();
控制台返回结果:"[object Object]"


4.可以使用toString()检测对象类型
例如:

var a="dd";
toString.call(a);
"[object String]"

function isString(arg){
	return Object.prototype.toString.call(arg) 
	=== "[object String]"
}


两者都可以通过显示原型重新定义:
myObject.prototype.valueOf() = function myValueOf(){};
myObject.prototype.toString() = function myToString(){};
重写函数都可以为匿名函数。

补充说明——Java也存在类似情况:一个类可以自定义(重写)toString方法。

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2e6ek1a3vmjoo


微信公众号/头条号:技术很有趣
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值