對應視頻分享:點擊進入
基本上,javascript中所有資料型別都擁有valueOf和toString這兩個方法,null和undefined除外,它們倆解決javascript值運算與顯示的問題,本文將詳細介紹,有需要的朋友可以參考下,
為什么基本資料型別也有方法:
有人說上面這都是基本操作,看這個干嘛,但是想一想,好像有點不對,這幾個好像還有別的兄弟姐妹啊,如Undefined, Null,
Boolean, Number和String這幾個,有誰去了解過這幾個建構式嗎
接下來我們就要用到這個東西了,話說這幾位,都是大英雄,這就是在每一個string的背后,都站著一位默默的String,其他也是一樣的,實際上,這幾位是一些特殊的參考型別,方便我們操作對應的基本型別,
這里涉及到了一個概念’‘基本包裝型別’’ 我們來看一段簡單的代碼
var message = 'helloworld'
var mymessage = message .substring(0,6)
console.log(mymessage) // 'hellow'
在上面這三行代碼執行中,發生了很多事,
程序就類似于下面的代碼
var _message = new String(‘helloworld’) //通過String去創建一個實體物件
var mymessage = _message.substring(0,6)
//呼叫這個實體物件的方法,呼叫完畢之后銷毀這個實體物件
console.log(mymessage ) // 'hellow'
在整個程序中,String這個建構式一直沒有出現在我們的視線中,它只是默默地去進行創建,被使用,然后銷毀,哇哦,多么沉默的英雄啊,
那現在我們就明白了,基本資料型別呼叫的并不是它本身的方法,而是在執行這個方法的時候,去為它創建基本包裝型別String,然后通過這個基本包裝型別的值去創建一個實體物件,再呼叫這個實體物件的指定方法,最后再將這個實體物件銷毀,嗯,基本包裝型別也銷毀,
toString()與valueOf()
0、object

備注:報錯原因
因為實際上瀏覽器執行的可能是這樣:
{}//空陳述句塊
.toString()//另外一條錯誤的陳述句
如果要讓 js 引擎認為 { 是一個物件字面量運算式的開始,一般就是加 (),這個時候,js 引擎就知道()里的是運算式,所以當做運算式來決議,所以
({}).toString()
就不會報錯
1.array,

2.function

3.RegExp

4.Date

valueOf:除了date其他的都是回傳資料本身
5.Boolean

6.number回傳number字串

原來 JavaScript采用 IEEE 754 的規范 雙精度數字,JavaScript 中只有一種數字型別:基于 IEEE 754
標準的雙精度 ,它并沒有為整數給出一種特定的型別,所以所有的數字都是小數,
123.toString() 等價于 123.0toString(),這樣的陳述句當然行不通, 這也更合理解釋了為什么123…toString()、123 .toString()、(123).toString()能夠得到正確的回傳值,
總結
valueOf偏向于運算,toString偏向于顯示,
valueOf:除了date其他的都是回傳資料本身
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/293986.html
標籤:其他
下一篇:01-兩數之和
