美文网首页
valueOf() 和 toString()

valueOf() 和 toString()

作者: 撑船的摆渡人 | 来源:发表于2019-08-06 11:03 被阅读0次
    对象在转换基本类型时,首先会调用 valueOf 然后调用 toString。并且这两个方法你是可以重写的。

    valueOf

    1. 解释:返回指定对象的原始值。
    2. 当对象需要原始值的时候,JavaScript会自动调用它。

    不同类型对象的valueOf()方法的返回值
    (1)Array 返回数组对象本身。
    (2)Boolean 布尔值。
    (3)Date 存储的时间是从 1970 年 1 月 1 日午夜开始计的毫秒数 UTC。
    (4)Function 函数本身。
    (5)Number 数字值。
    (6)Object 对象本身。
    (7)String 字符串值。
    (8)Math 和 Error 对象没有 valueOf 方法。


    image

    toString()

    1.每个Object对象都包含该方法。
    2.当Object对象以字符串方式引用时会被自动调用,注意,是Object对象。
    3.默认调用时返回[object type]。

    var o = new Object();
    o.toString();
    控制台返回结果:"[object Object]"
    

    4.可以使用toString()检测对象类型

    var a="dd";
    toString.call(a);//需要通过apply或者call方式调用
    "[object String]"
    
    image

    Object.prototype.toString()可以识别标准类型及内置对象类型

    console.log(Object.prototype.toString.call("haolucky"));//[object String]
    console.log(Object.prototype.toString.call(888));//[object Number]
    console.log(Object.prototype.toString.call(true));//[object Boolean]
    console.log(Object.prototype.toString.call(undefined));//[object Undefined]
    console.log(Object.prototype.toString.call(null));//[object Null]
    console.log(Object.prototype.toString.call({name: "haolucky"}));//[object Object]
    console.log(Object.prototype.toString.call(function(){}));//[object Function]
    console.log(Object.prototype.toString.call([]));//[object Array]
    console.log(Object.prototype.toString.call(new Date));//[object Date]
    console.log(Object.prototype.toString.call(/\d/));//[object RegExp]
    

    总结

    1. null、undefined 没有valueOf 和 toString 方法
    2. toString()和valueOf()的主要不同点在于,toString()返回的是字符串,而valueOf()返回的是原对象
    3. 使用toString()方法可以区分内置函数和自定义函数

    相关文章

      网友评论

          本文标题:valueOf() 和 toString()

          本文链接:https://www.haomeiwen.com/subject/xvabdctx.html