JS判断是Object对象还是数组对象

2020-06-16  本文已影响0人  时光xwd

一般情况下都会想到使用typeof()来判断数组和对象,但是使用typeof来判断其返回值都是 object


图1.png

方法一:通过typeof() 配合 isNaN()判断

1、数组对象的长度为>=0的数字,而object对象的长度为undefined
2、isNaN():如果参数值为 NaN 或字符串、对象、undefined等非数字值则返回 true, 否则返回 false。

  typeof([]) $$ !isNaN([].length)
  // true
  typeof({}) $$ !isNaN({}.length)
  // false

方法二:通过Object.prototype.toString.call()判断

使用Object.prototype.toString.call()将该变量转化为代表其类型的string

Object.prototype.toString.call([]);
// "[object Array]"
Object.prototype.toString.call({});
// "[object Object]"

方法三:通过isArray()判断

isArray(),用于确定传递的值是否是一个 Array,如果值是则为true; 否则为false.

Array.isArray([])
// true
Array.isArray({})
// false

方法四:通过constructor来判断

官方解释是constructor 属性返回对创建此对象的数组函数的引用。官方的解释一般都不是人能看懂的,其实 constructor 原本就是用来进行对象类型判断的,但是还有一个作用就是官方的解释 的意思: 每一个对象实例都可以通过 constrcutor 对象访问它的构造函数

var a = {};
console.log(a.constructor);
var b = [];
console.log(b.constructor);
图2.png
上一篇下一篇

猜你喜欢

热点阅读