[转]javascript中判断变量是否为array

javascript中要判断一个变量是否为array通常是比较困难的,因为

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]'

转载于:https://www.cnblogs.com/w3live/archive/2011/03/28/1997486.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值