Array对象的判定

  /*
    关于JS对象类型的判断,最复杂的在于RegExp和Array了,判定RegExp的情形不较少,而Array就比较多了,下面就是判断Array的方法
     */

    //方法一:利用instanceof来判断对象是不是Array的实例
    function isArray(arr){
        return arr instanceof Array;
    }

    //方法二:利用constructor来判断
    function isArray(arr)
    {
        return !!arr && arr.constructor==Array;
    }

    //方法三:利用constructor和array的内置属性(实例方法)来判断一个对象是否是Array类型
    function isArray(arr) {
        return arr && typeof arr==="object" &&  'splice' in arr && 'join' in arr;
    }

    //方法四:通过sort方法的类型判断arr是不是Array对象的实例
    function isArray(arr)
    {
        return typeof arr.sort==="function";
    }

    //方法五:通过Array.prototype.toString.call()方法来判断对象
    function isArray(o) {
        try
        {
            Array.prototype.toString.call(o);
            return true;
        }
        catch (e)
        {}
        return false;
    }

    //方法六:通过typeof和数组的length属性来判断
    function isArray(o) {
        if(o && typeof o=="object" && typeof o.length=="number" && isFinite(o.length))
        {
            //通过length属性是否符合原生数组的length的特性来进行双重判定
            var _originalLength=o.length;
            o[o.length]="_test_";
            var _newLength=o.length;
            o.length=_originalLength;
            return _newLength==o.length+1;
        }
        return false;
    }

    //方法七:
    function isArray(array) {
        var result=false;
        try
        {
            new array.constructor(Math.pow(2,32));
        }
        catch(e)
        {
            result=/Array/.test(e.message);
        }
        return result;
    }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏微信公众号:Java团长

Java抽象类与接口的区别

很多常见的面试题都会出诸如抽象类和接口有什么区别,什么情况下会使用抽象类和什么情况你会使用接口这样的问题。本文我们将仔细讨论这些话题。

9100
来自专栏静默虚空的博客

[Java 基础]运算符和表达式

Java运算符 (1)赋值操作符 赋值操作符(=)表示:取右边的值(即右值),把它复制给左边(即左值)。 右值可以是任意的常量、变量或表达式(只要可以生成一个值...

20490
来自专栏Java帮帮-微信公众号-技术文章全总结

04-01.总结switch,for,while,do。while跳转语句

1:switch语句(掌握) (1)格式: switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; ...

40250
来自专栏hbbliyong

Python正则进阶

  返回一个列表,如果正则表达式中没有分组,则列表中包含的是所有匹配的内容,如果正则表达式中有分组,则列表中的每个元素是一个元组,元组中包含子分组中匹配到的内容...

16930
来自专栏程序员与猫

常见的正则表达式解读释义

又名:写给正在学习前端的女友看的常见正则表达式解读。原文发布于 https://www.zybuluo.com/wddpct/note/728081 。 ...

22990
来自专栏架构之路

Java继承类中static成员函数的重写

在java中,static成员函数是否可以被重写呢? 结论是,你可以在子类中重写一个static函数,但是这个函数并不能像正常的非static函数那样运行。 也...

30440
来自专栏极客慕白的成长之路

Java的算数运算符、关系运算符、逻辑运算符、位运算符

b=5,a=5 c=-5,a=5 d=3,l=3 f=3,m=4 g=3,n=3 h=6,o=5

23520
来自专栏PHP在线

Array数组函数(三)

array_keys — 返回数组中所有的键名 array_values — 返回数组中所有的值 array_key_exists — 检查给定的键名或索引是否...

36080
来自专栏hbbliyong

Oracle字符串函数

Oracle字符串函数 平常我们用Oracle主要有两种字符串类型 1.char始终为固定的长度,如果设置了长度小于char列的值,则Oracle会自动用空格填...

50160
来自专栏练小习的专栏

js运算符优先级笔记

运算符的优先级决定了表达式中运算执行的先后顺序,优先级高的运算符最先被执行。 下面是一个简单的例子: 3 + 4 * 5 // 计算结果为23 乘法运算符...

24380

扫码关注云+社区

领取腾讯云代金券