系列文章传送门:
文章目录
有很多小伙伴在涉及到类型检查的时候只知道
typeof
一把梭哈,但是
typeof
并不是万能的。
typeof
只能检测基本数据类型,包括
boolean、undefined、string、number、symbol
,而
null ,Array、Object
,使用
typeof
出来都是
Object
,函数的
typeof
是
function
无法检测具体是哪种引用类型。
JS判断数组
1.通过instanceof运算符判断
从构造函数入手:可以判断一个对象是否是在其原型链上原型构造函数中的属性。
console.log(arr instanceof Array); //true
typeof
和 instanceof
这两者都可以用来判断变量,typeof
会返回基本类型,而instanceof
只会返回一个布尔值。
2.通过constructor判断
这个属性是返回对象相对应的构造函数,Object的每个实例都有构造函数 constructor
,用于保存着用于创建当前对象的函数。
console.log(arr.constructor === Array); //true
3.通过数组自带的isArray方法判断
ES5中新增了Array.isArray
方法,IE8及以下不支持,用于确定传递的值是否是一个 Array
,值得一提的是,这个方法是我在开发中最常用的:
console.log(Array.isArray(arr)); //true
对于ES5之前不支持此方法的问题,我们其实可以做好兼容进行自行封装,如下:
if (!Array.isArray) {
Array.isArray =