数组中的toString,toLocalString,valueOf方法有啥区别

Posted

tags:

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

参考技术A

调用数组的toString()和valueOf方法会返回相同的值,即由数组中每个值的字符串形式拼接而成的一个以逗号分割的字符串。实际上,为了创建这个字符串会调用数组每一项的toString()方法。


来看下面这个例子:


var colors =["red", "blue", "green"];  //创建一个包含3个字符串的数组
alert(colors.toString());               //red, blue, green
alert(colors.valueOf());                //red,blue,green
alert(colors);                          //red,blue,green



在这里,我们首先显式地调用了toString()和valueOf()方法,以便返回数组的字符串表示,每个值的字符串都表示拼接成了一个字符串,中间可以逗号分割。

最后一行代码直接将数组传递给了alert()。

由于alert()要接受字符串参数,所以它会在后台调用toString()方法,由此会得到与直接调用toString()方法相同的结果。


另外,toLocalString()方法经常也会返回与toString()和valueOf()方法相同的值,但也不总是如此。

当调用数组的toLocaleString()方法时,它也会创建一个数组的以逗号分割的字符串。

而与前两个方法唯一的不同指出在于,这因此i是为了取得每一项的值,调用的是每一项的toLocaleString()方法,而不是toString()方法。


请看下面这个例子:

var person1 = 
   toLocaleString: function () 
       return "Nikolaos";
   ,
   toString: function () 
       return "Nicholas";
   

var person2 = 
   toLocaleString: function () 
       return "Grigorios";
   ,
   toString: function () 
       return "Greg";
   
;
var people =[person1, person2];
alert(people);                   //Nicholas,Greg
alert(people.toString());        //Nicholas,Greg
alert(people.toLocaleString());  //Nikolaos,Grigorios

本回答被提问者采纳

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

以上是关于数组中的toString,toLocalString,valueOf方法有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

Java中数组元素以toString()方法输出的问题,谁能帮帮我啊!

javascript中toString()方法的用法?

怎么重写toString()才能把数组打印出来

JavaScript函数补完:toString()

JS中的toString()和valueOf()方法

char []中的Java toString方法[重复]