JavaScript判断变量是否为数组的方法(Array)

 更新时间:2016年02月24日 10:27:42   作者:好JSER  
这篇文章主要介绍了JavaScript判断变量是否为数组的方法(Array),涉及到javascript 数组 变量相关知识,感兴趣的朋友一起学习吧

 今天小编给大家整理些关于javascript判断变量是否是数组(Array)的相关知识,主要通过以下四点给大家展开话题,具体内容如下所示:

1. typeof真的那么厉害吗??

//首先看代码
var ary = [1,23,4];
console.log(typeof ary); //输出结果是Object

上面的办法并不能实时的检测出是否是数组,只能判断其类型,所以说typeof判断基本类型数据还是挺好的,但是不能准确测试出是否是数组(typeof的具体用法以后提及,现在回归正题)

2.instanceof 判断

var ary = [1,23,4];
console.log(ary instanceof Array)//true;

从输出的效果来看,还是挺令人满意的,能准确的检测出数据类型是否是数组,不要高兴的太早,大家先想想这个的缺点,我们接着说第三种方法

3.原型链方法

var ary = [1,23,4];
console.log(ary.__proto__.constructor==Array);//true
console.log(ary.constructor==Array)//true 这两段代码是一样的

这个办法开起来好高大上哦~~,利用了原型链的方法,但是但是,这个是有兼容的哦,在IE早期版本里面__proto__是没有定义的哦~而且,这个仍然有局限性,我们现在就来总结一下第2种方法和第3种方法局限性

总结一下第2种方法和第3种方法局限性

instanceof 和constructor 判断的变量,必须在当前页面声明的,比如,一个页面(父页面)有一个框架,框架中引用了一个页面(子页面),在子页面中声明了一个ary,并将其赋值给父页面的一个变量,这时判断该变量,Array == object.constructor;会返回false;

原因:

1、array属于引用型数据,在传递过程中,仅仅是引用地址的传递。

2、每个页面的Array原生对象所引用的地址是不一样的,在子页面声明的array,所对应的构造函数,是子页面的Array对象;父页面来进行判断,使用的Array并不等于子页面的Array;切记,不然很难跟踪问题!

4.通用的方法

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

具体Object.prototype.toString 的用法,请参照 Object.prototype.toString的用法

好了关于JavaScript判断变量是否为数组的方法(Array)就给大家介绍这么多,今天主要给大家总结了这四种,本文写的不好还请各位大侠多多指教,谢谢!

相关文章

  • javascript中in运算符用法分析

    javascript中in运算符用法分析

    这篇文章主要介绍了javascript中in运算符用法,实例分析了in运算符的相关使用技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • 解决layui数据表格排序图标被超出的表头挤出去的问题

    解决layui数据表格排序图标被超出的表头挤出去的问题

    今天小编就为大家分享一篇解决layui数据表格排序图标被超出的表头挤出去的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • 使用JavaScript触发过渡效果的方法

    使用JavaScript触发过渡效果的方法

    hover 和 :focus 这样的伪类,我们可以很方便的将元素从一个样式切换到另一个样式,而且切换是会有过渡效果。但有时我们想要使用 js 来驱动过渡(即在代码中触发过渡)也是可以实现的,下面通过本文给大家介绍下
    2017-01-01
  • JavaScript 数组的深度复制解析

    JavaScript 数组的深度复制解析

    一般情况下,使用 “=” 可以实现赋值。但对于数组、对象、函数等这些引用类型的数据,这个符号就不好使了。这篇文章主要介绍了JavaScript 数组的深度复制解析的相关资料,需要的朋友可以参考下
    2016-11-11
  • javascript获取设置div的高度和宽度兼容任何浏览器

    javascript获取设置div的高度和宽度兼容任何浏览器

    Javascript如何获取和设置div的高度和宽度,并且兼容任何浏览器,感兴趣的朋友不妨看看下面的代码或许有意想不到的收获
    2013-09-09
  • js鼠标单击和双击事件冲突问题的快速解决方法

    js鼠标单击和双击事件冲突问题的快速解决方法

    下面小编就为大家带来一篇js鼠标单击和双击事件冲突问题的快速解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • JS实现轮播图小案例

    JS实现轮播图小案例

    这篇文章主要为大家详细介绍了JS实现轮播图小案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • 通过V8源码看一个关于JS数组排序的诡异问题

    通过V8源码看一个关于JS数组排序的诡异问题

    一直在学习C++,也想阅读点开源的C++项目,发现网上对Google V8评价不错,于是上Github上找到了源代码,但在学习中遇到一个js数组排序的问题,下面这篇文章主要给大家介绍了通过V8源码说说一个关于JS数组排序的诡异问题的相关资料,需要的朋友可以参考下。
    2017-08-08
  • smartcrop.js智能图片裁剪库

    smartcrop.js智能图片裁剪库

    为了测试这个智能识别插件,我试了很多壁纸图片,都能智能裁剪出图片的主体部分,转而尝试了一下chrome和Firefox以及IE,发现IE只有10以上的版本才支持,chrome和Firefox支持,手机浏览器不支持,这到底是啥黑科技??今天我们就来详细看看
    2015-10-10
  • JS模拟自动点击的简单实例

    JS模拟自动点击的简单实例

    这篇文章介绍了JS模拟自动点击的简单实例,有需要的朋友可以参考一下
    2013-08-08

最新评论