Object.prototype.valueOf()和toString()方法

js对象中的valueOf()方法和toString()方法非常类似,
当需要返回对象的原始值而非字符串的时候才调用valueOf(),尤其是转换为数字的时候。
如果在需要使用原始值的上下文中使用了对象,JavaScript就会自动调用valueOf()方法。

 valueOf()方法是Object的原型方法,每个对象都具有该方法,但是各对象返回的值有一定的区别。
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201205184553290.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmc0NTEwMDcyMjg4,size_16,color_FFFFFF,t_70)
 注意number、string、boolean中的基本包装类型的使用。
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201205184644215.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmc0NTEwMDcyMjg4,size_16,color_FFFFFF,t_70)

其实类似于这样
function MyDataType( x){
this.x=x;
}
MyDataType.prototype.valueOf=function(){
return this.x
}
var temp = new MyDataType(1);
var result =temp.valueOf()
1
typeOf result number

toString()
每一个继承 Object 的对象都有 toString 方法,如果 toString 方法没有重写的话,会返回 ‘[Object type]’,其中 type 为对象的类型。但当除了 Object 类型的对象外,其他类型直接使用 toString 方法时,会直接返回都是内容的字符串
应用:
可以通过 toString() 来获取每个对象的类型。为了每个对象都能通过 Object.prototype.toString() 来检测。
在这里插入图片描述
来一个测试你是否理解上面的话的意思典型例题:输出456.
我们试图将一个对象设置为对象a的,其值为123,这时对象键自动转换为字符串。
但是,当对象自动转换为字符串化时,它变成了[Object object]。 所以我们在这里说的是a[“Object object”] = 123。 然后,我们可以尝试再次做同样的事情。 c对象同样会发生隐式类型转换。那么,a[“Object object”] = 456。
然后,我们打印a[b],它实际上是a[“Object object”]。 我们将其设置为456,因此返回456。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值