每個對象的原型Object.prototype上都有這兩個方法:valueOf和toString膀篮,如下:
圖片
含義:
valueOf() 方法返回指定對象的原始值忍些。
toString() 方法返回一個表示該對象的字符串。
常用內(nèi)置對象的valueOf和toString方法對比:
01. 內(nèi)置對象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. 內(nèi)置對象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. 內(nèi)置對象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. 內(nèi)置對象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. 內(nèi)置對象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. 內(nèi)置對象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
由于內(nèi)置對象很多,我們就不一一檢測了两曼,用一張圖表總結下:
image.png
原文:Javascript中的valueOf()與toString()
1. ES6字符串方法擴展精講
2. ES6數(shù)組方法擴展精講
3. ES6數(shù)組解構賦值精講
4. ES6對象解構賦值精講