zoukankan      html  css  js  c++  java
  • 【JavaScript】判断一个对象是否为数组的几种方法

    • typeof 对于Function、String、Number、Undefined等几种类型,完全可以胜任,但是当对象是Array时,
    var arr = [1,2,3,4];
    alert(typeof arr); //object
    
    • instanceof 返回一个Boolean值,指出对象是否是特定的一个实例,使用
    var arr = [1,2,3,4];
    alert(arr instanceof Object); //true这是由于Array是Object的子类
    alert(arr instanceof Array); //true
    
    • Array.isArray()
    // 下面的函数调用都返回 true
    Array.isArray([]);
    Array.isArray([1]);
    Array.isArray(new Array());
    
    // Array.prototype 也是一个数组。
    Array.isArray(Array.prototype);
    
    

    当检测Array实例时, Array.isArray 优于 instanceof,因为Array.isArray能检测iframes.

    var iframe = document.createElement('iframe');
    document.body.appendChild(iframe);
    xArray = window.frames[window.frames.length-1].Array;
    var arr = new xArray(1,2,3); // [1,2,3]
    
    Array.isArray(arr);  // true
    
    arr instanceof Array; // false
    
    
    • 原型链
    var arr = [1,2,3,4];
    console.log(arr.__proto__.constructor == Array);//true
    console.log(arr.constructor == Array);//true
    
    • Object.prototype.toString:首先,取得对象的一个内部属性[[Class]],然后依据这个属性,返回一个类似于"[object Array]"的字符串作为结果.利用这个方法,再配合call,我们可以取得任何对象的内部属性[[Class]],然后把类型检测转化为字符串比较,以达到我们的目的。
    var arr = [1,2,3,4];
    Object.prototype.toString.call(arr) == "[object Array]";//true
    toString.apply(arr) == "[object Array]";//true;
    
    //不能使用Array.isArray(),就采用以下方法
    if (!Array.isArray) {
      Array.isArray = function(arg) {
        return Object.prototype.toString.call(arg) === '[object Array]';
      };
    }
    
    • isArray() jquery已经封装了方法判断是否是数组
    var arr = [1,2,3];
    console.log($.isArray(arr));//true
    
  • 相关阅读:
    jenkins+svn+Ant+tomcat+非maven项目构建
    阿里云服务器CentOS6.9安装jenkins
    jenkins构建项目时报错缺少com.sun.image.codec.jpeg包解决方案
    不间断会话服务:screen
    数据库备份与还原:mysqldump,source
    多表更新:update,join
    删除数据高级用法:delete,truncate
    远程传输文件命令:scp
    远程控制服务:配置sshd服务,密钥验证登陆
    绑定多块网卡:负载均衡
  • 原文地址:https://www.cnblogs.com/qiuyueding/p/9672742.html
Copyright © 2011-2022 走看看