生活随笔
收集整理的這篇文章主要介紹了
对象转换为原始值
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先,我們要明白原始值得概念
原始值
存儲在棧(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
?
以上
轉載于:https://www.cnblogs.com/wr314/p/5561494.html
總結
以上是生活随笔為你收集整理的对象转换为原始值的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。