检测数组的4种方法

检测数组的4种方法

检测数据类型的方法请看本人的另一篇博客

https://blog.csdn.net/xuehangongzi/article/details/82907915 下面主要介绍检测数组的(其中有三个方法和检测数据类型相同) 1、instanceof instanceof 方法主要是检测变量的原型链是否指向Array构造函数的prototype原型上。

var arr = [4,67,23];

arr instanceof Array //return true

补充:但是instanceof不一定能保证检测的结果一定正确,因为只要是在原型链上的都会返回true ,arr instanceof Object 也返回true 2、constructor

var arr = [];

arr.constructor === Array ruturn true

但是constructor可以被重写,所以不能确保一定是数组

var str = 'abc';

str.constructor = Array;

str.constructor === Array // return true

而很明显str不是数组

3、Array.isArray() ES5 在Array上新增了检测数组的方法,因为是新的方法,浏览器有一定的兼容问题

4、Object.prototype.toString.call() 终极方法,可以确保方法能检测一定是数组

var arr = [34,65,1];

Object.prototype.toString.call(arr) === '[object Array]' //return true

总结: 由于Array.isArray()是封装在浏览器中,运行效率比较高,所以当真正需要检测一个变量类型时,先会检测浏览器是否支持Array.isArray(), 之后在用Obejct.prototype.toString()方法: 所以周全的封装的代码如下:

var arr = [1,3];

function isArray(value){

if (typeof Array.isArray === "function") {

return Array.isArray(value);

}else{

return Object.prototype.toString.call(value) === "[object Array]";

}

}

alert(isArrayFn(arr));// true

参考文章 https://blog.csdn.net/oliverpeng1521314/article/details/70980129

猜你喜欢

诺贝尔是瑞典人,为何和平奖却由挪威颁布?
体力劳动包括哪些
365审核要多久

体力劳动包括哪些

06-29 3767
腾讯的疑虑(4) 这篇要聊的 腾讯 疑虑:游戏业务将走下坡路以及互联网平台严监管、大股东无限期减持、广告业务业绩下滑、视频流市场被头条系挤...
手机号码怎么设置关机状态
365提款验证地址是什么

手机号码怎么设置关机状态

07-10 4475
win10如何改默认安装路径 win10修改默认安装位置的方法[多图]
西班牙队发布西装版+球衣版世界杯全家福,西足协主席C位