美文网首页
JS判断是Object对象还是数组对象

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

作者: 时光xwd | 来源:发表于2020-06-16 09:21 被阅读0次

    一般情况下都会想到使用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

    相关文章

      网友评论

          本文标题:JS判断是Object对象还是数组对象

          本文链接:https://www.haomeiwen.com/subject/roqlxktx.html