JS如何判断一个变量是否为数组类型
2018-09-23 15:19
549 查看
参考博客:https://blog.csdn.net/lee_magnum/article/details/11555981
1、instanceof操作符
instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。
obj instanceof Object; //true 实例obj在不在Object构造函数中
[code]var arr = [1,2,3,1]; alert(arr instanceof Array); // true
2、对象的constructor属性
[code]var arr = [1,2,3,1]; alert(arr.constructor === Array); // true
第2种和第3种方法貌似无懈可击,但是实际上还是有些漏洞的,当你在多个frame中来回穿梭的时候,这两种方法就亚历山大了。由于每个iframe都有一套自己的执行环境,跨frame实例化的对象彼此是不共享原型链的,因此导致上述检测代码失效!
3、Object.prototype.toString
[code]function isArrayFn (o) { return Object.prototype.toString.call(o) === '[object Array]'; } var arr = [1,2,3,1]; alert(isArrayFn(arr));// true
call改变toString的this引用为待检测的对象,返回此对象的字符串表示,然后对比此字符串是否是'[object Array]',以判断其是否是Array的实例。
4.Array.isArray()
ECMAScript5将Array.isArray()正式引入JavaScript,目的就是准确地检测一个值是否为数组。IE9+、 Firefox 4+、Safari 5+、Opera 10.5+和Chrome都实现了这个方法。但是在IE8之前的版本是不支持的。
[code]var arr = [1,2,3,1]; var arr2 = [{ abac : 1, abc : 2 }]; function isArrayFn(value){ if (typeof Array.isArray === "function") { return Array.isArray(value); }else{ return Object.prototype.toString.call(value) === "[object Array]"; } } alert(isArrayFn(arr));// true alert(isArrayFn(arr2));// true
阅读更多
相关文章推荐
- js如何判断一个变量是否是数组?
- js如何判断一组数字是否连续,得到一个临时数组[[3,4],[13,14,15],[17],[20],[22]];
- C/C++中如何判断一个输入的变量是否和其定义的类型一致
- 【js】——如何判断一个字符是否在某个字符数组中
- JS 判断某变量是否为某数组中的一个值 的几种方法
- js javascript 判断一个变量是否在一个数组中
- js如何判断一个数组中是否有重复的值
- js判断变量类型是否为数组
- 如何判断一个变量是数组Array类型
- js判断一个变量是否为数组的解决方案
- JS 判断某变量是否为某数组中的一个值的3种方法(总结)
- JS判断某变量是否为某数组中的一个值的3种方法
- 如何判断一个变量是数组Array类型
- 如何在前端用js判断一个元素在一个数组中是否存在
- javascript数据变量类型判断(JS变量是否是数组,是否是函数的判断)
- 判断一个变量是否属于数组类型
- 如何判断某变量是否为数组数据类型?
- Js中如何判断一个对象为数组类型
- js中如何判断一个变量是否为空
- 如何判断一个整数数组中是否有重复元素