在js中區分數組、對象以及null並無那麼簡單,通常的值類型能夠使用typeof區分,可是使用typeof區分不了數組、對象和null,看一下使用typeof區別各類值得結果:es6
結果很明顯,基本上區別不開數組、對象和null,可是有時候咱們須要判斷一個值的類型是否是數組或者是null。 區別某個值是數組仍是對象的幾種方式:
- instance:只有是數組的時候instance Array纔會爲true
- constructor判斷:不太靠譜,由於constructor很容易被改寫,沒有instance靠譜
3. Object.prototype.toString.call或者Object.prototype.toString.apply:在不重寫toString方法的基礎上能夠區別Array、Object、null
4. es6的Array.isArray:因爲是es6新增的方法,因此在兼容性上存在一些劣勢,可是在判斷類型上具備優點,不會由於重寫constructor和toString方法失效
爲了區分數組能夠優先考慮es6的Array.isArray,因爲兼容性問題能夠次之能夠考慮instanceof、Object.prototype.toString.call、constructor,爲了區別null能夠使用Object.prototype.toString.call或者===