常用的類型判斷方法typeof
image.png
不是很精確升熊,于是自定義了一個判斷類型的方法:
function typeOf(obj) {
return Object.prototype.toString.call(obj).slice(8, -1).toLowerCase()
}
為什么類型判斷會和toString扯上關(guān)系,上面那句代碼啥意思?
接著看一下下面的toString()用法:
typeof.png
幾乎每個類型都有自己的toString方法,除了undefined。
先來看看這句:Object.prototype.toString.call(obj)混弥,意思是用obj去調(diào)用Ojbect.prototype.toString()方法趴乡,啥意思对省?先試試看:
image.png
image.png
哦蝗拿,結(jié)合上面的兩個截圖,差不多明白了蒿涎,因為Object.prototype.toString()方法的特殊性哀托,object的toString()返回的都是[object XXX]這種格式,而還有準(zhǔn)確的類型劳秋。
string.slice(start,end) 這個方法就很容易理解了仓手,slice(8, -1)從第8個開始,截取字符串玻淑,到倒數(shù)第一個(也就是最后一個)結(jié)束嗽冒,但截取的結(jié)果不包含-1位的字符。
結(jié)束补履。
最后發(fā)現(xiàn)一個有意思的問題 1.toString()會報錯添坊,原因是因為1后面的點,被當(dāng)成了小數(shù)點箫锤,只有寫兩個點,或者用括號包裹1才可以:
image.png