toSring和valueof 两者都是对象的方法!前者返回对象的字符串,后者返回对象的原始值,如果没有原始值则返回对象本身!
直接看代码
console.log((1).toString());//1 console.log((10).toString(2))//1010 console.log(("1").toString());//1 console.log((false).toString());//false console.log(({p:1}).toString());//[object,object] console.log((undefined).toString());//报错 console.log((null).toString());//报错 console.log((function(){}).toString());//function(){} console.log([1,2,3,4].toString());//1,2,3,4 console.log((new Date()).toString())//Fri Jul 03 2020 17:20:11 GMT+0800 (中国标准时间)由于是对象的方法,所以必须要是对象,由于1,“”1“”之前上篇文章说下,他是实例化出来的对象,只不过包装对象自己内部做了处理,生命周期很短,但是它原型上仍然有toString方法,不懂的可以点击这里!数组的这里也有个坑,数组也是对象,为什么对象返回是[object,object],而数组返回的是对应的字符串,其实数组覆盖了Object.toString方法,然后将连接数组并返回一个字符串,其中包含用逗号分隔的每个数组元素(相当于Array.join())!
var test= Object.prototype.toString; console.log(test.call(1));//[object Number] console.log(test.call("1"));//[object String] console.log(test.call(false));//[object Boolean] console.log(test.call({p:1}));//[object object] console.log(test.call(undefined));//[object undefined] console.log(test.call(null));//[object null] console.log(test.call(function(){}));//[object Function] console.log(test.call([1,2,3,4]));//[object Array] console.log(test.call(new Date()));//[object Date] console.log(test.call(new RegExp()));//[object RegExp]Object.prototype.toString.toString()能够很好的判断数据的类型及内置对象
也先看代码吧
console.log((1).valueOf());//1 console.log((10).ValueOf(2))//报错 console.log(("1").valueOf());//1 console.log((false).valueOf());//false console.log(({p:1}).valueOf());//{p:1} console.log((undefined).valueOf());//报错 console.log((null).valueOf());//报错 console.log((function(){}).valueOf());//function(){} console.log([1,2,3,4].valueOf());//[1,2,3,4] console.log((new Date()).valueOf());//1593767848260如果对象没有原始类型值就不作处理,直接返回对象本身!这里new Date()返回的是一堆数字,而toSring返回的是中文字符串!
1.toString()返回的是字符串,而valueOf()返回的是原始值,没有原始值返回对象本身 2.undefined和null都没有toString()和valueOf()方法 3.Date类型的toString()返回的表示时间的字符串;valueOf()返回的是现在到1970年1月1日的毫秒数 4.Number类型的toString()方法可以接收转换基数,返回不同进制的字符串形式的数值;而valueOf()方法无法接受转换基数 5.Object.prototype.toString.toString()能够很好的判断数据的类型及内置对象