zoukankan      html  css  js  c++  java
  • valueOf和toString的区别

    基本上所有的JavaScript数据类型都有valueOf(),toString()方法,null除外,这两个方法解决了JavaScript值运算和显示的问题
    valueOf()会把数据类型转换成原始类型,也就是说原来是什么类型,转换后还是什么类型,日期类型除外
    toString()会把数据类型转换成string类型,也就是说不管原来是什么类型,转换后一律是string类型
     
    这两个方法有意思的地方在于什么时候使用,总结如下:
    1、valueOf()偏向于运算,toString()偏向于显示
    2、对象转换时,优先调用toString()
    3、强转字符串的情况下,优先调用toString()方法;强转数字的情况下优先调用valueOf()
    4、正常情况下,优先调用toString()
    5、在有运算操作符的情况下valueOf()的优先级高于toString(),这里需要注意的是当调用valueOf()方法无法运算后还是会再调用toString()方法
    下面来看个案例:
    var a = { a : 10 , toString : function(){ console.log("tostring"); return this.a } };
    alert(+a); //10 tostring,先调用valueOf()方法,发现无法进行+运算,紧接着调用toString()方法
    
    var b= {a:2,valueOf:function(){return this.a+2}};
    alert(+b) //4 ,先调用valueOf()方法,返回4,可以进行运算,不再调用toString()
     
    var b= {a:2,valueOf:function(){return this.a+2},toString : function(){ console.log("tostring"); return this.a }};
    alert(+b) //4 ,先调用valueOf()方法,返回4,可以进行运算,不再调用toString(),从输出上可以看出没有调用toString()方法
    
    JavaScript各种数据对象调用valueOf,toString返回值也是个容易出错的地方,下面做个总结:
    调用valueOf()
    对象 返回值 类型
    Array 数组本身 Array
    Boolean Boolean 值。 Boolean
    Date 存储的时间是从 1970 年 1 月 1 日午夜开始计的毫秒数 UTC。 Number
    Function 函数本身。 Function
    Number 数字值。 Number
    Object 对象本身。这是默认情况。 Object
    String 字符串 String
    调用toString()
    对象 返回值 类型
    Array 数组的元素被转换为字符串,这些字符串由逗号分隔,连接在一起。其操作与 Array.toString 和 Array.join 方法相同。 String
    Boolean 字符串“true”,“false” String
    Date 字符串日期,如"Fri Dec 23 2016 11:24:47 GMT+0800 (中国标准时间)" String
    Function 函数字符串 String
    Number 字符串形式值 String
    Object "[object Object]" String
    String 字符串 String
     
     
    参考资料:
    http://www.jb51.net/article/34843.htm  想看案例的可以看看这个
  • 相关阅读:
    PHP 获取当前url的函数及参数
    PHP 和 AJAX responseXML 实例
    PHP 和 AJAX 投票
    AJAX技术在PHP开发中的简单应用
    摄影教程
    结合 Ajax 进行 PHP 开发
    CSS 格式验证器
    swfobject.js,这个JS究竟有什么作用呢
    PHP中Date获取时间不正确怎么办
    用来给不愿意用iframe的同志的页面引用的解决办法
  • 原文地址:https://www.cnblogs.com/diantao/p/6214203.html
Copyright © 2011-2022 走看看