美文网首页
判断一个变量是数组

判断一个变量是数组

作者: 隔壁老王z | 来源:发表于2019-01-02 17:31 被阅读0次
var ary = [1,23,4];
//1、typeof
console.log(typeof ary) //输出结果是Object
//2、instanceof 
console.log(ary instanceof Array) //true;
//3、原型链
var ary = [1,23,4];
console.log(ary.__proto__.constructor==Array); //true 只有在Chrome能取到__proto__
console.log(ary.constructor==Array) //true 这两段代码是一样的

第二种和第三种方法局限性:
instanceof 和constructor 判断的变量,必须在当前页面声明的,比如,一个页面(父页面)有一个框架,框架中引用了一个页面(子页面),在子页面中声明了一个ary,并将其赋值给父页面的一个变量,这时判断该变量,Array == object.constructor;会返回false;
原因:
1、array属于引用型数据,在传递过程中,仅仅是引用地址的传递。
2、每个页面的Array原生对象所引用的地址是不一样的,在子页面声明的array,所对应的构造函数,是子页面的Array对象;父页面来进行判断,使用的Array并不等于子页面的Array;切记,不然很难跟踪问题!

比较好的方法:

var ary = [1,23,4];
function isArray(o){
    return Object.prototype.toString.call(o)=='[object Array]';
}
console.log(isArray(ary));

追加一种新的方法 Array.isArray(arg):
因为是新添加的,在不支持的浏览器上可能有兼容性,用的时候需要兼容下不支持的浏览器,这个时候就要结合第4中方法了。

if(!Array.isArray){
    Array.isArray = function(arg){
        return Object.prototype.toString.call(arg)==='[object Array]'
    }
}

相关文章

  • 3、数组相关

    1、判断变量是否是数组

  • 2-10原型和原型链-解答

    如何准确判断一个变量是数组类型? instanceof可以,typeof无法判断是否为数组。 写一个原型链的例子 ...

  • 判断一个变量是数组

    第二种和第三种方法局限性:instanceof 和constructor 判断的变量,必须在当前页面声明的,比如,...

  • js中判断变量是否为数组

    判断变量是否为数组

  • 原型和原型链

    原型和原型链 题目 1.如何准确判断一个变量是不是数组? 答:用 a(变量)instanceof Array(数组...

  • python - 学习笔记

    其他变量值交换展开变量条件判断字符串嵌变量数组循环数组查重数组排序数组内包错误处理 和 with 其他 变量值交换...

  • 如何判断一个变量是数组

    instanceof操作符这个操作符和JavaScript中面向对象有点关系,了解这个就先得了解JavaScrip...

  • 判断一个变量是否为数组

    怎么判断一个变量是不是数组呢?由于数组也是对象,用typeof方法,输出的是Object,所以typeof肯定不能...

  • 数组

    检测是否是数组: ES3检测是否是数组:Object.prototype.toString.call(要判断的变量...

  • 数组

    检测是否是数组: ES3检测是否是数组:Object.prototype.toString.call(要判断的变量...

网友评论

      本文标题:判断一个变量是数组

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