JavaScript安全的类型检测

247 阅读1分钟

######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]"

是不是很神奇,所以日后我们想判断一个数据到底是数组还是对象我们可以很简单就区分了