JavaScript 获取数据类型的几种方式
在JavaScript中有很多种获取数据类型的方式,不同方式最终实现的效果也会不一样,这里就来简单写一下我知道的几种方式,正好复习一下很早以前学的内容。
typeof
typeof
应该是用的比较多的方式,我刚学JavaScript的时候用的也是 typeof
,用法如下:
var a = 1; // number类型
var b = 'abc'; // string类型
console.log(typeof(a)); // 在控制台输出a的类型
console.log(typeof b); // 在控制台输出b的类型
无论是 typeof(0)
还是 typeof 0
都能返回数据类型,可能返回的数据类型如下:
类型 | typeof 返回的类型 |
---|---|
number NaN | number |
string | string |
json array null | object |
function | function |
undefined | undefined |
无论是 json
还是 array
返回的都是 object
所以光靠 typeof
是不能分辨 json
和 array
的。
instanceof
instanceof运算符用于测试构造函数的prototype属性是否出现在对象的原型链中的任何位置,可以用来判断对象和数组,如下:
{} instanceof Object // 结果为 true
[] instanceof Array // 结果为 true
{} instanceof Array // 结果为 false
instanceof
比较适合用来判断 object
和 array
,不能用来判断 number
和 string
。
Object.prototype.toString.apply
Object.prototype.toString.apply
可以以字符串的方式返回对象类型,如下:
Object.prototype.toString.apply(10); // 返回 [object Number]
Object.prototype.toString.apply('abc'); // 返回 [object String]
Object.prototype.toString.apply([1, 2]); // 返回 [object Array]
Object.prototype.toString.apply({"a": "1"}); // 返回 [object Object]
Object.prototype.toString.apply(function() {}); // 返回 [object Function]
Object.prototype.toString.apply(undefined); // 返回 [object Undefined]
Object.prototype.toString.apply(null); // 返回 [object Null]
Object.prototype.toString.apply(NaN); // 返回 [object Number]
Object.prototype.toString.apply
相对来说是比较完美的获取数据类型的方式,但是在较老的IE可能会出现兼容性问题,不过现在主流的浏览器都不会出现兼容性问题。
除了上面写的方式外也可以通过某些数据类型独有的方法或属性来判断数据类型,例如可以通过是否有 push
方法来判断是否是数组。
其实上面的几种方式都有对应的应用场景,没有哪一个完美的说法,只有根据不同的场景选择对应的方式才是正确的。
版权声明:本文为原创文章,版权归 Mr. Ma's Blog 所有,转载请联系博主获得授权。
本文地址:https://www.misterma.com/archives/681/
如果对本文有什么问题或疑问都可以在评论区留言,我看到后会尽量解答。