当前位置:首页 > js判断一个变量是数组还是对象

js判断一个变量是数组还是对象

发布于 2018-04-12 阅读 685 次 Javascript

参考:https://www.cnblogs.com/Walker-lyl/p/5597547.html
因为无论是数组还是对象,对于typeof的操作返回值都为object,所以就有了区分数组类型和对象类型的需要:

方法一:通过length属性

一般情况下对象没有length属性值,其值为undefiend,而数组的length值为number类型
缺点:非常不实用,当对象的属性存在length,且其值为number(比如类数组),则该方法失效,不建议使用,看看即可。

方法二:通过instanceof来判断区分

instanceof 判断是否继承自某个对象

  1. var a = {
  2. name:'xiaoyaoji'
  3. };
  4. var b = ['xiaoyaoji'];
  5. a instanceof Array // false
  6. b instanceof Array // true

方法三:通过constructor

constructor返回一个对象的构造器

  1. var arr = [1, 2, 3];
  2. var obj = {
  3. name: 'lyl',
  4. age: 18,
  5. 1: 'name'
  6. }
  7. console.log(arr.constructor === Array); // true
  8. console.log(obj.constructor === Array); // false

方法四:通过toString()方法

数组原型和对象原型定义的toString()方法不同

  1. var a = {
  2. name:'xiaoyaoji'
  3. };
  4. var b = ['xiaoyaoji'];
  5. console.log(a); // [object Object]
  6. console.log(b); // [object Array]

方法五:通过Array独有方法判断

  1. var a = {
  2. name:'xiaoyaoji'
  3. };
  4. var b = ['xiaoyaoji'];
  5. console.log(a.sort === Array.prototype.sort); // false
  6. console.log(b.sort === Array.prototype.sort); // true