valueOf() 和 toString()

2019-08-06  本文已影响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()方法可以区分内置函数和自定义函数
上一篇下一篇

猜你喜欢

热点阅读