js中toString和valueOf的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js中toString和valueOf的区别相关的知识,希望对你有一定的参考价值。

    toString:返回对象的字符串表示形式。

    语法:objectname.toString([radix])

    objectname要为其搜索字符串表示形式的对象。  

    radix可选,为将数字值转换为字符串指定一个基数。  此值仅用于数字。

       toString 方法是一个所有内置的 javascript 对象的成员。  它的行为取决于对象的类型:


2.valueOf:返回指定对象的基元值。

语法:object.valueOf( )

object 引用是任何内部 JavaScript 对象,将通过不同的方式为每个内部 JavaScript 对象定义 valueOf 方法。Math 和 Error 对象都没有 valueOf 方法。


总结:toString主要是把对象转换为字符串,而valueOf主要把对象转换成一个基本数据的值这就是他们之间最基本的区别。

参考技术A ”==”与”===”是不同的,一个是判断值是否相等,一个是判断值及类型是否完全相等。
下面的规则用于判定===运算符比较的两个值是否相等的判断条件
•如果两个值的类型不同,它们就不相同。
•如果两个值是数字,而且值相同,那么除非其中一个或两个都是NaN(这种情况它们不是等同的),否则它们是等同的。值NaN永远不会与其他任何值等同,包括它自身(奇怪的家伙),要检测一个值是否是NaN,可以使用全局函数isNaN()。
•如果两个值都是字符串,而且在串中同一位置上的字符完全相同,那么它们就完全等同。如果字符串的长度或内容不同,它们就不是等同的。
•如果两个值都是布尔型true,或者两个值都是布尔型false,那么它们等同。
•如果两个值引用的是同一个对象、数组或函数,那么它们完全等同。如果它们引用的是不同的对象(数组或函数),它们就不完全等同,即使这两个对象具有完全相同的属性,或两个数组具有完全相同的元素。
•如果两个值都是null或都是undefined,它们完全相同。
参考技术B js权威指南中提到了
toString主要是把对象转换为字符串;
valueOf主要把对象转换成一个基本数据的值;
参考技术C toString是把对象转换为字符串;
valueOf是把对象转换成一个基本数据的值

valueOf偏向于运算,toString偏向于显示。
1、 在进行对象转换时(例如:alert(a)),将优先调用toString方法,如若没有重写toString将调用valueOf方法,如果两方法都没有重写,按Object的toString输出。
2、 在进行强转字符串类型时将优先调用toString方法,强转为数字时优先调用valueOf。
3、 在有运算操作符的情况下,valueOf的优先级高于toString。

js 中 toString( ) 和valueOf( )

1、toString()方法:主要用于Array、Boolean、Date、Error、Function、Number等对象转化为字符串形式。日期类的toString()方法返回一个可读的日期和字符串。

数组形式:

1  var array = ["CodePlayer", true, 12, -5];  
2  console. log( array.toString() );  
3  输出的形式为:
4  CodePlayer,true,12,-5

 

1 日期形式:
2 
3 var date = new Date(2016, 9, 3, 23, 11, 59, 230);  
4 console. log( date.toString() );   
5  输出的形式是:
6 1.Mon Oct 03 2016 23:11:59 GMT+0800 (CST)// (中国标准时间)  
1  数字形式:
2 var num =  15.26540;  
3 consoel.log( num.toString() );  
4  输出的形式是:
5 15.2654  
1 Object:
2 var obj = {name: "张三", age: 18};  
3 console. log( obj.toString() );   
4  输出的形式是:
5 [object Object]  

 

1  布尔形式:
2 var bool = true;  
3 console. log( bool.toString() );  
4 输出的形式是:5 true  

 2、valueOf()方法:

这个方法没有的任务并没有详细的定义:如果存在任意原始值,它就默认将对象转换为表示它的原始值。对象是复合值,而且大多数对象无法真正表示为一个原始值,因此默认的valueOf()方法简单地返回对象本身,而不是返回一个原始值。数组、函数和正则表达式简单地继承了这个默认方法,调用这些类型的实例的valueOf()方法只是简单返回这个对象本身。日期类定义的valueOf()方法会返回它的一个内部表示:1970年1月1日以来的毫秒数.

1 var d = new Date(2016,9,2);   
2 d.valueOf();   
3 输出的是:
4 1475337600000  

 


转:http://1752306891.iteye.com/blog/2322753

以上是关于js中toString和valueOf的区别的主要内容,如果未能解决你的问题,请参考以下文章

JS中toString()toLocaleString()valueOf()的区别

Javascript中valueOf与toString区别

Javascript中valueOf与toString区别

valueOf和toString的区别

js 中 toString( ) 和valueOf( )

valueOf和toString的区别