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
    
  • 相关阅读:
    从图片中提取html格式的布局
    javascript语法
    2015 9月2日 工作计划与执行
    2015 9月1日 工作计划与执行
    支付模块结构设计
    ubuntu下的pycharm4中文路径乱码
    2015 8月31 工作计划与执行
    25个git进阶技巧 2015-05-12 16:04 34人阅读 评论(0) 收藏
    Model/View框架总体架构 分类: QT学习实践 2015-05-11 22:05 34人阅读 评论(0) 收藏
    用Dom处理XML文件 分类: QT学习实践 2015-05-11 21:16 30人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/qiuyueding/p/9672742.html
Copyright © 2011-2022 走看看