下面我就為大家帶來一篇物件轉換為原始值的實作方法。現在就分享給大家,也給大家做個參考。
首先,我們要明白原始值得概念
原始值
儲存在堆疊(stack)中的簡單數據段,也就是說,它們的值直接儲存在變數存取的位置。
引用值
儲存在堆(heap)中的對象,也就是說,儲存在變數處的值是一個指標( point),指向儲存物件的記憶體處
——引用了w3c裡的概念
#原始值,簡單點理解就是null undefined string number Boolean 這些
物件轉換為boolean相對簡單
所有的物件(包含陣列和函數)都會轉換成true,包裝物件從也是對象,也轉換為true
書上是這麼說的 “訪問字串,數字和布林值的屬性時創建的臨時對象稱之為包裝對象”,我是這麼理解的,new出來的string啊,number啊,boolean啊都算作包裝對象,他有別於對象,但它確實是個對象,最主要的區別就是不能給包裝對象定義新的屬性,因為string number Boolean的屬性是唯讀的。
物件轉換成string型別
如果物件有toString()方法,就呼叫toString()的方法,如果傳回一個原始值,就把這個原始值轉換成字串,物件就轉換成這個字串,如果不具有toString()方法或這個方法回傳的值不是一個原始值,那麼就呼叫valueOf()方法,同樣的套路,如果傳回的是一個原始值,就把這個原始值轉換成字串,那麼物件也就轉換成了這個字串了,如果傳回的不是原始值,就拋出一個型別轉換的錯誤。
這裡的toString()方法和valueOf()方法就不一一贅述了,
##物件轉換為number型別##比較轉換成string,轉換number的過程,正好的與其相反,先呼叫valueOf()方法,再呼叫toString()方法,最後toString()方法回傳的不是一個原始值是,js就拋出一個錯誤。
當使用"=="和" "運算子進行數字的計算或字串的拼接時,如果運算子的一側是對象,則會使用特殊的物件轉換為原始值的方法。對於非日期對象,物件轉換成原始值就是
物件先呼叫valueOf()方法,再呼叫tostring()方法,並將透過呼叫這兩個方法得到的原始值直接作為物件轉換成的原始值,對於日期物件來說,先呼叫toString()方法,再呼叫valueOf方法。
對於日期物件轉換成原始值,舉個例子吧
var now=new Date(); typeOf(now+1); //"string" 将日期对象转换成了字符串,因为先调用的是toString()方法 typeOf(now-1); //"number" 体现了js的灵活性,"-"将字符串转换线成了number
上面是我整理給大家的,希望今後會對大家有幫助。
相關文章:
JavaScript中五大常見函數詳解#javascript的程式碼最佳化詳解JavaScript之call和apply以上是物件轉換為原始值的實作方法(圖文教學)的詳細內容。更多資訊請關注PHP中文網其他相關文章!