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. 【转载】Fiddler抓包及模拟服务端

    此文章转载公众号‘云测学院'链接:https://mp.weixin.qq.com/s/qXmBDh980nBJ8IchbRGC3Q 及公众号gloryroadtrain 在HTTP接口的测试过程中, ...

  2. 《DSP using MATLAB》Problem 8.4

    今天是六一儿童节,陪伴不了家人,心里思念着他们,看着地里金黄的麦子,远处的山,高高的天 代码: %% ------------------------------------------------- ...

  3. nprogress 转

    转载:http://www.xuanfengge.com/front-end-nprogress-and-lightweight-web-progress-bar-nanobar.html 前言 进度 ...

  4. Python学习day05 - Python基础(3) 格式化输出和基本运算符

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  5. ubuntu 更新国内源

    1.备份原有源列表 sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup 2. 修改文件并添加国内源 vi /etc/apt/sourc ...

  6. Linux常用知识

    1.Redhat 系统按如下系统启动:加载内核执行init程序/etc/rc.d/rc.sysinit #由init执行的第一个脚本/etc/rc.d/rc${RUNLEVEL}d/* #$RUNLE ...

  7. Leetcode953. Verifying an Alien Dictionary验证外星语词典

    某种外星语也使用英文小写字母,但可能顺序 order 不同.字母表的顺序(order)是一些小写字母的排列. 给定一组用外星语书写的单词 words,以及其字母表的顺序 order,只有当给定的单词在 ...

  8. windwos API 第七篇 分离路径,组合路径 _splitpath _makepath

    函数原型: //Break a path name into components. void _splitpath( const char *path, char *drive, char *dir ...

  9. html常用标签详解3-a标签

    a标签 1.a标签的属性 a标签属于行内元素标签,双标签<a></a> href:a标签的跳转地址 target:打开方式(_self自身:_blank:新窗口) title: ...

  10. linux命令统计文件中某个字符串出现的次数

    1.使用grep linux grep命令在我的随笔linux分类里有过简单的介绍,这里就只简单的介绍下使用grep命令统计某个文件这某个字符串出现的次数,首先介绍grep命令的几个参数,详细参数请自 ...