JavaScript安全的型別檢測

前端校園發表於2018-08-08

######1.如何分辨陣列、物件、null型別 首先讓我們看一下簡單型別的判斷,沒有任何問題

typeof(1) // "number"
typeof('1') // "string"
typeof(false) // "boolean"
// 這些是沒有問題的
複製程式碼

下面這些就是無法區分的:

typeof(null) // object
typeof([1]) //object
typeof({name:1}) //object
複製程式碼

問題就出現在這,why? 判斷js中的型別大部分都可以使用typeof方法,但在這裡卻不行,如果單純使用typeof方法得到的結果都是object是無法區分的,所以我們不能直接使用typeof方法,Object原型上提供了一個toString()的方法,結合call方法指定this即可獲取當前資料型別

//使用方法 Object.prototype.toString.call()方法可以對所有型別進行判斷
Object.prototype.toString.call(1) // "[object Number]"
Object.prototype.toString.call('1') // "[object String]"
Object.prototype.toString.call([1]) // "[object Array]"
Object.prototype.toString.call({name:1}) // "[object Object ]"
Object.prototype.toString.call(null) // "[object Null]"
複製程式碼

是不是很神奇,所以日後我們想判斷一個資料到底是陣列還是物件我們可以很簡單就區分了

相關文章