JavaScript引用类型之Array数组的toString()和valueof()方法的区别

 

一、转换方法

1、在JavaScript中几乎所有对象都具有toLocaleString()、toString和valueof()方法,因为,所有的对象都继承自Object,而前面所说的方法都是Object的方法!

所以数组也有toString()方法,其中调用数组的toString()方法会返回由数组中每个值的字符串形式拼接而成的一个以逗号分割的字符串。代码如下:

var colors=["red","blue","green"];
alert(colors.toString()); //输出:red,blue,green
alert(colors.valueOf()); //输出:red,blue,green
alert(colors); //输出:red,blue,green

第一行alert()显示的调用了toString()方法,以便返回数组的字符串变现形式,每个值的字符串表示拼接成了一个字符串,中间用逗号分隔!

第二行alert()调用了valueof()方法,返回的还是数组的字符串形式

第三行alert()要接收字符串参数,而第三行传给alert是一个数组,所以,alert会在后台调用toString()方法,在输出数组的字符串类型

2、toString()方法:返回对象的字符串表示。

  操作
Array 将 Array 的元素转换为字符串。结果字符串由逗号分隔,且连接起来。
Boolean 如果 Boolean 值是 true,则返回 “true”。否则,返回 “false”。
Date 返回日期的文字表示法。
Error 返回一个包含相关错误消息的字符串。
Function 返回如下格式的字符串,其中 functionname 是被调用 toString 方法函数的名称:

function functionname( ) { [native code] }
Number 返回数字的文字表示。
String 返回 String 对象的值。
普通对象 返回 “[object Object]

3、valueOf()方法:返回指定对象的原始值。

  返回值
Array 返回数组的实例对象,即数组本身
Boolean Boolean 值。
Date 存储的时间是从 1970 年 1 月 1 日午夜开始计的毫秒数 UTC
Function 函数本身。
Number 数字值。
Object 对象本身。这是默认情况。
String 字符串值。

4、两者的不同点

共同点:在 JavaScript 中,toString()方法和valueOf()方法,在输出对象时会自动调用。

不同点:

(1)、二者并存的情况下,在数值运算中,优先调用了valueOf,字符串运算中,优先调用了toString。

代码如下:

var obj = {};
obj.valueOf = function()
{
return 10;
}
obj.toString = function()
{
return "return value";
} var result = obj + 1; //var result = obj.valueOf() + 1;
alert(result);
alert(obj); //alert(obj.toString());

(2)返回值类型的差别:

toString一定将所有内容转为字符串

valueOf取出对象内部的值,不进行类型转换

(3)用途的差别:

valueOf专用于算数计算和关系运算

toString专用于输出字符串

(3)共同的缺点

无法获取null和undefined的值

小知识点:

Number类型的toString()方法比较特殊,有默认模式和基模式两种。

默认模式的例子:

var num1 = 10;

var num2 = 10.0;

console.log(num1.toString());//输出10

console.log(num2.toString());//输出10

无论你用什么表示法声明数字,默认模式只是按十进制返回。

基模式的例子:

var num1 = 10;

console.log(num1.toString(2));//输出1010

console.log(num1.toString(8));//输出12

console.log(num1.toString(16));//输出A

很明显,基模式就是把数值型转换成相应的进制。

toString方法和valueof()方法的区别的更多相关文章

  1. Exception 的 toString() 方法和 getMessage() 方法的区别

    Exception 的 toString() 方法和 getMessage() 方法的区别: 在开发的过程中打印错误日志时尽量使用e.toString() 方法, 因为当错误为空指针时 e.getMe ...

  2. ThinkPHP的D方法和M方法的区别

    M方法和D方法的区别 ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类. 使用M方法 如果是如下情况,请考虑使用 ...

  3. M方法和D方法的区别

    M方法和D方法的区别 ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类. 使用M方法 如果是如下情况,请考虑使用 ...

  4. java数组、java.lang.String、java.util.Arrays、java.lang.Object的toString()方法和equals()方法详解

    public class Test { public static void main(String[] args) { int[] a = {1, 2, 4, 6}; int[] b = a; in ...

  5. JAVA反射中的getFields()方法和getDeclaredFields ()方法的区别

    JAVA反射中的getFields()方法和getDeclaredFields ()方法的区别   关于获取类的字段有两种方式:getFields()和getDeclaredFields().我们先来 ...

  6. ExtJS中listener方法和handler方法的区别

    listener方法和handler方法的区别在文档中的说明的太玄乎了,看不懂 listeners监听能够对一个click Event事件添加任意多个的事件响应处理函数 而handler处理只能够通过 ...

  7. Object、String、数组的 toString() 方法和 equals() 方法及java.util.Arrays

    public class Test { public static void main(String[] args) { int[] a = {1, 2, 4, 6}; int[] b = a; in ...

  8. MongoDB save()方法和insert()方法的区别

    MongoDB save()方法和insert()方法的区别 首先看官方文档怎么说的 Updates an existing document or inserts a new document, d ...

  9. 问题:ExecuteNonQuery 与 ExecuteScalar 结果: ExecuteNonQuery方法和ExecuteScalar方法的区别

    ExecuteNonQuery方法和ExecuteScalar方法的区别 ----ExecuteNonQuery():执行命令对象的SQL语句,返回一个int类型变量,如果SQL语句是对数据库的记录进 ...

随机推荐

  1. JspServlet

    初始化servlet时,选用的配置类: config.getInitParameter("engineOptionsClass")?(System.getSecurityManag ...

  2. layui 表格点击图片放大

    表格 ,cols: [[ //表头 {checkbox: true,fixed: true} ,{type: 'numbers', title: 'ID', sort: true,width:80} ...

  3. hdu1693 Eat the Trees [插头DP经典例题]

    想当初,我听见大佬们谈起插头DP时,觉得插头DP是个神仙的东西. 某大佬:"考场见到插头DP,直接弃疗." 现在,我终于懂了他们为什么这么说了. 因为-- 插头DP很毒瘤! 为什么 ...

  4. 程序员总数3W+,阿里巴巴首次公开2018代码数据报告

  5. Mybatis框架+原理

    https://www.cnblogs.com/luoxn28/p/6417892.html(转载,蛮详细的)

  6. php循环语句(一)

    PHP 循环语句 什么是循环语句? 在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句.一组被重复执行的语句称之为循环体,能否继续重复,决定循环的终止条件.循环结构是在一定 ...

  7. Thinkphp 加载更多

    要实现的效果是这样的: 每次点击显示更多按钮,都会往下显示2条数据,直到后面没有数据了.. 数据表: articleList模板文件 <include file="./Applicat ...

  8. MYSQL中使用事务的案例

    基本介绍 事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml语句要么全部成功,要么全部失败.如:网上转账就是典型的要用事务来处理,用以保证数据的一致性. 关键词 start tran ...

  9. css背景属性整理

    背景颜色 {background-color:red}/*常用十六进制颜色#fff*/ 图片 {background-image:url();} /*插入图片路径*/ 重复 {background-r ...

  10. PAT甲级——A1029 Median

    Given an increasing sequence S of N integers, the median is the number at the middle position. For e ...