美文网首页JavaScript
javascript判断是否是数组方法总结

javascript判断是否是数组方法总结

作者: Aniugel | 来源:发表于2019-07-21 23:37 被阅读0次
    // 判断是不是数组
        // ① 方法简单有效,缺点是IE8及以下版本浏览器不兼容
        var arr = [3, 4, 5, 6]
        var isArr = Array.isArray(arr)
        console.log(isArr)
    
        // ②
        var arr = [3, 4, 5, 6]
        var isArr = arr instanceof Array
        console.log(isArr)
    
        // ③
        var arr = [3, 4, 5, 6]
        var isArr = arr.constructor === Array
        console.log(isArr)
        console.log(typeof arr)
    
        // 判断数组封装的方法
        function isArray(obj) {
            return typeof obj == 'object' && obj.constructor == Array
        }
    
        // ④第二第三种方法也有列外情况,比如在跨框架iframe的时候使用页面中的数组时会失败,
        // 因为在不同的框架iframe中,创建的数组是不会相互共享其prototype属性的;当第二第
        // 三种方法也不能用时,可以使用最通用的方法 Object.prototype.toString.call()
        function isArray(obj) {
            return Object.prototype.toString.call(obj) == '[object Array]';
        }//仅判断Array
    
        function isType(data, type) {
            return Object.prototype.toString.call(data) === "[object " + type + "]";
        } //通用判断方法
    
        // 方法中的call()可以换成apply(),不能直接用toString调用,
        // 因为从原型链的角度讲,所有对象的原型链最终都指向了 Object, 
        // 按照JS变量查找规则,其他对象应该也可以直接访问到 Object 的
        //  toString方法,但是大部分的对象都实现了自身的 toString 方
        //  法,这样就可能会导致 Object 的 toString 被终止查找,因此要用 
        //  call或apply 来强制调用Object 的 toString 方法
    
    

    typeof的一些坑 typeof 判断Array和null等特殊类型都会输出Object,typeof 返回值有六种可能: "number"、 "string"、 "boolean"、 "object" 、"function" 和 "undefined"。

    相关文章

      网友评论

        本文标题:javascript判断是否是数组方法总结

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