[转]javascript中判断变量是否为array
2011-03-28 10:16
513 查看
javascript中要判断一个变量是否为array通常是比较困难的,因为
var a = [];
alert(typeof a ==='object'); // true
通常的做法是判断
可是这个方法有一个问题,如果一个数组是来自另一个frame中的,那么它的constructor 将是另一个对象。
YUI中用了如下的方法:
简单来说,就是判断这个变量有没有 length 属性,同时有没有 splice 方法。可惜,这样的判断方法是可以用一个 object 来伪造数组的。
Google 的 Mark Miller 发现,用下面方法,可以简单又可靠的得到一个变量是否一个数组:
转自:http://stauren.net/log/fqibpxyz3.html
----------------------------------------------------------------------------------
总结一下:如果判断变量是否是JSON格式?则可用
或
因为,JSON格式和Array返回的都是Object,所以需要增加判断一下,是否是数组类型。
同样,判断function也可这样用,
var a = [];
alert(typeof a ==='object'); // true
通常的做法是判断
a.constructor === Array // true
可是这个方法有一个问题,如果一个数组是来自另一个frame中的,那么它的constructor 将是另一个对象。
YUI中用了如下的方法:
isArray: function(o) { if (o) { return L.isNumber(o.length) && L.isFunction(o.splice); } return false; },
简单来说,就是判断这个变量有没有 length 属性,同时有没有 splice 方法。可惜,这样的判断方法是可以用一个 object 来伪造数组的。
Google 的 Mark Miller 发现,用下面方法,可以简单又可靠的得到一个变量是否一个数组:
Object.prototype.toString.apply(value) === '[object Array]'
转自:http://stauren.net/log/fqibpxyz3.html
----------------------------------------------------------------------------------
总结一下:如果判断变量是否是JSON格式?则可用
var jsondata = { "id": 123, "name": "abc" }; alert(jsondata instanceof Object && Object.prototype.toString.apply(jsondata) === '[object Object]');
或
var jsondata = { "id": 123, "name": "abc" }; alert(typeof(jsondata) == 'object' && Object.prototype.toString.apply(jsondata) === '[object Object]');
因为,JSON格式和Array返回的都是Object,所以需要增加判断一下,是否是数组类型。
同样,判断function也可这样用,
Object.prototype.toString.apply(jsondata) === '[object Function]'
相关文章推荐
- JavaScript判断变量是否为数组的方法(Array)
- JavaScript判断变量是否为数组的方法(Array)
- JavaScript判断变量是否为数组的方法(Array)
- javascript判断变量是否为空的方法
- 关于Javascript判断变量是否为空
- JS、JQ判断变量是否为数组的方法(Array)
- javascript 判断变量是否为null
- JavaScript判断变量是否为空
- JavaScript判断变量是否为空的自定义函数分享
- JavaScript判断变量是否为数组的方法
- JavaScript判断变量是否为undefined的两种写法区别
- javascript判断变量是否存在
- javascript 判断两个变量是否相等
- JavaScript判断变量是否是数组
- JavaScript判断变量是否为undefined两种方式差异
- js javascript 判断一个变量是否在一个数组中
- JavaScript判断变量是否为undefined两种方式差异
- Javascript判断变量是否定义的方法,欢迎补充
- Javascript中判断变量是 array还是object(是数组还是对象)