zoukankan      html  css  js  c++  java
  • js判断数组

    1.constructor

    在W3C定义中的定义:constructor 属性返回对创建此对象的数组函数的引用

    就是返回对象相对应的构造函数。从定义上来说跟instanceof不太一致,但效果都是一样的

    如: (a instanceof Array)   //a是否Array的实例?true or false

       (a.constructor == Array)  // a实例所对应的构造函数是否为Array? true or false

    较为严谨并且通用的方法:

    function isArray(object){
        return object && typeof object==='object' &&
                Array == object.constructor;
    }

    2.特性判断法

    以上方法均有一定的缺陷,但要相信人民大众的智慧是无所不能及的,我们可根据数组的一些特性来判断其类型 

    复制代码
    function isArray(object){
        return  object && typeof object==='object' &&    
                typeof object.length==='number' &&  
                typeof object.splice==='function' &&    
                 //判断length属性是否是可枚举的 对于数组 将得到false  
                !(object.propertyIsEnumerable('length'));
    }
    复制代码

    有length和splice并不一定是数组,因为可以为对象添加属性,而不能枚举length属性,才是最重要的判断因子。

    ps: 在这里普及下 propertyIsEnumerable 方法:

    object. propertyIsEnumerable(proName)

    判断指定的属性是否可列举

    备注:如果 proName 存在于 object 中且可以使用一个 For…In 循环穷举出来,那么 propertyIsEnumerable 属性返回 true。如果 object 不具有所指定的属性或者所指定的属性不是可列举的,那么 propertyIsEnumerable 属性返回 false。

    propertyIsEnumerable 属性不考虑原型链中的对象。

    示例:

    var a = new Array("apple", "banana", "cactus");
    document.write(a.propertyIsEnumerable(1));

    3.最简单的方法

    function isArray(o) {
        return Object.prototype.toString.call(o) === ‘[object Array]‘;
    }


  • 相关阅读:
    阶段一 第一周 2-5 2-6 构建maven聚合工程
    阶段一 第一周 2-3 前后端分离开发模式讲解
    阶段一 第一周 2-2前后端技术选型
    Linux基础
    SpringMVC复习
    电商航线整理
    Mybatis整理复习
    python re正则
    爬虫基础 简单正则
    mysql 备份 恢复 事物 ER模型 pymysql交互
  • 原文地址:https://www.cnblogs.com/yangyang03/p/6247550.html
Copyright © 2011-2022 走看看