每个对象的原型Object.prototype上都有这两个方法:valueOf和toString,如下:
含义:
valueOf() 方法返回指定对象的原始值。
toString() 方法返回一个表示该对象的字符串。
常用内置对象的valueOf和toString方法对比:
01. 内置对象Number
valueOf()
console.log(new Number("123").valueOf()) // 123
console.log(typeof new Number("123").valueOf()) // number
toString()
toString()
console.log(new Number("123").toString()) // '123'
console.log(typeof new Number("123").toString()) // string
02. 内置对象String
valueOf()
console.log(new String("123").valueOf()) // '123'
console.log(typeof new String("123").valueOf()) // string
toString()
toString()
console.log(new String("123").toString()) // '123'
console.log(typeof new String("123").toString()) // string
03. 内置对象Boolean
valueOf()
console.log(new Boolean("123").valueOf()) // true
console.log(typeof new Boolean("123").valueOf()) // Boolean
console.log(new Boolean("123").valueOf() === '123') // false
toString()
toString()
console.log(new Boolean("123").toString()) // true
console.log(typeof new Boolean("123").toString()) // string
04. 内置对象Array
valueOf()
console.log([1, 2, 3].valueOf()) // [1,2,3]
console.log(typeof [1, 2, 3].valueOf()) // object
toString()
toString()
console.log([1, 2, 3].toString()) // 1,2,3
console.log(typeof [1, 2, 3].toString()) // Sting
05. 内置对象Object
valueOf()
console.log({a:1}.valueOf()) // {a: 1}
console.log(typeof {a:1}.valueOf()) // object
toString()
toString()
console.log({a:1}.toString()) // {a: 1}
console.log(typeof {a:1}.toString()) // Sting
06. 内置对象Function
valueOf()
var fn=function(){console.log("123");}
console.log(fn.valueOf()) // ƒ () { console.log("123"); }
console.log(typeof fn.valueOf()) // function
toString()
toString()
var fn=function(){console.log("123");}
console.log(fn.toString()) // ƒ () { console.log("123"); }
console.log(typeof fn.toString()) // string
由于内置对象很多,我们就不一一检测了,用一张图表总结下:
原文:Javascript中的valueOf()与toString()
1. ES6字符串方法扩展精讲
2. ES6数组方法扩展精讲
3. ES6数组解构赋值精讲
4. ES6对象解构赋值精讲