判断js变量类型的三个方法
1. 使用Object.prototype.toString.call(val)
2. 使用val.constructor的方法
至于为什么不用typeof呢?这是因为对于数组, typeof的结果会很奇怪:
3. 使用typeof
总结:
感觉目前为止最好的方法是第一种,用Object.prototype.toString.call(val)去获取,然后最后得到 [object 类型名] 这种形式的字符串,,虽然比较难记住,但是它的局限性是最小的.
而用constructor这种方法,得到的是[Function: 类型]的形式,不过对于构造子形式的局限是对于undefined和null这两个特殊
的数据结构是不存在构造子的,而且对于函数的声明,构造子会返回声明时的构造函数,而不是类型!
至于typeof这个方法算是比较简单粗暴,可以直接返回类型名,不过需要注意的是当用typeof判断数组的时候,会返回object而不是array,而且typeof null 返回的结果也是object.