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

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

阅读 11.8k
4 个回答

吐血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和java的那个不是一回事,java的那个的确相同,可是js里面不是这么用的。他的作用是把包装器对象拆成基元类型。

num = new Number(123);
//Number {123}
num.valueOf();
//123
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题