valueOf()与toString()
toString()
// 数字进制转换
console.log((1).toString()) // 1
console.log((10).toString(2)) // 1010
console.log((10).toString(4)) // 22
console.log((10).toString(8)) // 12
console.log((10).toString(10)) // 10
console.log((10).toString(16)) // a
console.log(('11111').toString()) //11111
console.log(false.toString()) //false
console.log(true.toString()) //true
// 原型上不存在toString()
// console.log(undefined.toString()) // Cannot read properties of undefined (reading 'toString')
// console.log(null.toString()) // Cannot read properties of null (reading 'toString')
console.log((function(){}).toString()) // function(){}
console.log(({a:1}).toString()) //[object Object]
console.log(([1,2,3]).toString()) // 1,2,3
console.log((new Date()).toString()) //Mon Jun 13 2022 14:08:56 GMT+0800 (中国标准时间)
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({a: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]
console.log(test.call(new Map()));//[object Map]
valueOf()
console.log((1).valueOf()) //1 number
console.log((10).valueOf(2)) // 10 自动忽略传入的参数2
console.log(('1').valueOf()) // 1 string
console.log((false).valueOf()) // false
console.log((true).valueOf()) // true
// console.log((null).valueOf()) // Cannot read properties of null (reading 'valueOf')
// console.log((undefined).valueOf()) // Cannot read properties of undefined (reading 'valueOf')
console.log((function(){}).valueOf()) //ƒ (){}
console.log(([1,2,3]).valueOf()) //[1, 2, 3]
console.log((new Date()).valueOf()) //1655101282926 此刻的时间戳
console.log(new Date(1655101282926))
共同点
1、null、undefined都没有toString() 与 valueOf()方法
2、toString()可以接收参数 把数字类型转换成不同进制的数 而valueOf()只会返回原始值
3、toString() 方法可以用于检测数据类型 Object.prototype.toString 配合 indexOf()