JavaScript判断一个变量是数组

538 阅读1分钟

JavaScript中判断数据是什么类型的方法有: typeof, instanceof, constructor, Object.prototyee.toString方法以及Array.isArray()等。

1. typeof运算符  - 它会返回一个表示参数数据类型的字符串

// typeof 对对象类型的数据均返回"object",并不能区分对象类型的数据

typeof [1,2]  --> "object"
typeof {a:1}  --> "object"
typeof null --> "object"

所以typeof不能作为判断数组的方法

2.instanceof运算符 - 用于检测 构造函数的prototype属性 是否出现在某个实例对象的原型链

// 语法
object instanceof constructor
// object 某个实例对象  
// constructor 某个构造函数

// 例子
[1,2] instanceof Array --> true
[1,2] instanceof Object --> true // 在数组的原型链上也能找到Object构造函数
{} instanceof Array --> false

3.constructor属性 -  这个属性指向生成这个值的方法

[].constructor -->  ƒ Array() { [native code] }
{}.constructor -->  ƒ Object() { [native code] }
null.constructor --> 报错

constructor不是一种特别靠谱的方法,因为constructor属性是可以被改写的

4. Object.prototype.toString  -  会返回"[object type]",type代表对象的类型

Object.prototype.toString.call([]) --> "[object Array]"
Object.prototype.toString.call({}) --> "[object Object]"
Object.prototype.toString.call('a') --> "[object String]"
// apply方法也可以

5.用isArray方法判断 - 当参数为数组时,返回为true,否则返回false