基本上,所有JS数据类型都拥有valueOf和toString这两个方法,null除外。它们俩解决javascript值运算与显示的问题。
一般来说valueof一般用于在数字运算的隐式调用,例如: a+b,而toString用于字符串运算,alert(a)。
toString()方法:主要用于Array、Boolean、Date、Error、Function、Number等对象转化为字符串形式。日期类的toString()方法返回一个可读的日期和字符串.
valueof()方法:它就默认将对象转换为表示它的原始值。
//数组类型 var arr = [1,2,3]; console.log(arr.valueOf());//[1,2,3] console.log(typeof arr.valueOf());//object console.log(arr.valueOf() instanceof Array);//true console.log(arr.toString());//'1,2,3' console.log(typeof arr.toString());//string //原始对象 var obj = { a: 1 }; console.log(obj.valueOf());//{a:1} console.log(typeof obj.valueOf());//object console.log(obj.valueOf() instanceof Object);//true console.log(obj.toString());//[object Object] console.log(typeof obj.toString());//string //日期类型 var date = new Date(); console.log(date.valueOf());//1516333518175 console.log(typeof date.valueOf());//number console.log(date.toString());//Fri Jan 19 2018 11:45:18 GMT+0800 (中国标准时间) console.log(typeof date.toString());//string //正则 var reg = new RegExp(/\d/);// console.log(reg.valueOf());// /\d/ console.log(typeof reg.valueOf());//object console.log(reg.toString());// /\d/ console.log(typeof reg.toString());//string