首页 > js中的object对象toString和valueOf的区别?

js中的object对象toString和valueOf的区别?

本人觉得存在一个就够了,其理念都是转换成字符串。期待大家不同的见解。


吐血ing...强烈推荐题主有事没事去查手册!传送门

toString()是转化成字符串应该没什么歧义,其他很多语言也都有这么一个函数,比如Java,C#

Reference to Object.prototype.valueOf

JavaScript calls the valueOf method to convert an object to a primitive value. You rarely need to invoke the valueOf method yourself; JavaScript automatically invokes it when encountering an object where a primitive value is expected.

我想纠正一下题主的想法:
1. toString()和valueOf()完全是做两件事的函数
2. valueOf()之所以很少用到,如上面所说的,因为js会在需要的时候会自动调用这个函数。
3. 如果你可能需要用到valueOf(),它的作用是返回一个对象的原始值,比如:

var str = new String('hello,world');
console.log(typeof str); //'object'
console.log(typeof str.valueOf()); //'string'

建议去熟读犀牛大典


valueOf 优先级高于 toString http://stackoverflow.com/questions/2485632/valueof-vs-tostring-in-javascript


这个valueOf和java的那个不是一回事,java的那个的确相同,可是js里面不是这么用的。他的作用是把包装器对象拆成基元类型。

num = new Number(123);
//Number {123}
num.valueOf();
//123
【热门文章】
【热门文章】