一、toStringjavascript
(1)調用toString方法java
Array是將數組中的每一個元素字符串化,並使用逗號拼接起來數組
object返回的是內部屬性[[Class]]的值,[object Object]安全
number則是轉換爲字符串值,如1轉爲"1",NaN轉爲"NaN",1/0轉爲"Infinity"函數
boolean,true轉爲"true",false轉爲"false"工具
(2)JSON字符串化對象
工具函數JSON.stringify(..)在將JSON對象序列化爲字符串時也使用了ToString方法ip
JSON.stringify(11) // 11字符串
JSON.stringify("11") // ""11""string
JSON.stringify(null) // "null"
JSON.stringify(true) // "true"
可是JSON.stringify只能轉化安全的JSON值,不安全的值包含以下格式
當在object中出現undefined、function、symbol時會自動忽略,在array中遇到則返回null,已保證單元格位置不變。
當包含循環引用的對象時,則會報錯。
注意:若對象定義了toJSON()方法,JSON字符串化時會先調用該方法,而後使用它的返回值來進行序列化。(所以能夠對JSON不安全的對象,定義一個toJSON方法)
JSON.stringify(..)第二個參數能夠是數組或函數,數組定義須要哪些key值須要被返回,函數有兩個參數,分別爲key和value,若是要忽略某個值,則return undefined,不然return相應的value。
var a = {
b: 11,
c: '11',
d: [1, 2, 3]
}
JSON.stringify(a, ['b', 'c']) // {b: 11, c: '11'}
JSON.stringify(a, function(k, v) {
if (k !== 'c') return v;
})
// {b: 11, c: '11'}
a、字符串、數字、布爾值和null的JSON.stringify(..)規則和toString()方法相同
b、若是傳遞給JSON.stringify(..)的對象定義了toJSON()方法,那麼該方法會在字符串化前調用,以便將對象轉化爲安全的JSON值。
二、toNumber
ES5規範定義了抽象操做ToNumber
true 轉換爲1,
false 轉換爲0,
undefined轉換爲NaN,
null轉換爲0,
字符串如果類數字轉換爲對應的數字,處理失敗返回NaN,
對於以0開頭的16進制不是按16進制處理,而是按10進制處理,
對象會首先轉換爲基本類型值,而後再按以上規則進行轉換。
轉換爲基本類型值的方式是檢查該對象是否有valueOf()方法,若是有而且返回基本類型值,就使用該值進行強制類型轉換。若是沒有就使用toString()的返回值(若是存在)來進行強制類型轉換。
若是valueOf()和toString()均不返回基本類型值,則產生TypeError錯誤。
從ES5開始,使用Object.create(null)建立的對象[[Prototype]]屬性爲null,而且沒有valueOf()和toString()方法,所以沒法進行強制類型轉換。
三、toBoolean
javascript中的值分爲如下兩類:
(1)能夠被強制類型轉換爲false的值
(2)其餘(能夠被強制類型轉換爲true的值)
ES5規範9.2節中定義了抽象操做toBoolean
如下這些是假值:
假值能夠強制類型轉換爲false。從邏輯上講,假值之外的都應該是真值。但Javascript規範對此並無明確的定義,只是給出了一些實例。