javascript判断一个元素是否数组

来源:stauren.net 时间:2009-07-31 12:48:00 

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]'
simple & easy, 我已经在 d-u 中加入这个方法了,相信其他 library 也会渐渐采用这个方法的。

from The Miller Device

使用 d-u javascript library, 敬请访问 http://code.google.com/p/double-underscore/source/browse/#svn/trunk/src

 

标签:JavaScript,数组,判断
0
投稿

猜你喜欢

  • 特别推荐:Web开发常用速查手册大全(100+)

    2011-05-06 12:44:00
  • Google谷歌的CSS前景图片合并技术

    2009-07-13 12:21:00
  • SQLServer 游标简介与使用说明

    2009-07-02 13:53:00
  • asp截取字符串方法

    2009-02-09 13:30:00
  • em与px的区别以及em特点和应用

    2008-11-11 12:03:00
  • HTML5 Canvas 起步(1) - 基本概念

    2009-04-21 13:14:00
  • SQL Server 总结复习(一)

    2012-10-07 11:04:02
  • Dreamweaver表格布局经验谈

    2007-02-03 11:39:00
  • js页面文字选中后分享到新浪微博实现

    2011-03-17 12:55:00
  • asp利用aspjpeg给图片生成PNG透明水印

    2009-03-20 14:01:00
  • 教你快速掌握怎样在Windows下升级MySQL

    2008-12-31 17:08:00
  • 微软工程师讲解SQL server阻塞

    2008-01-05 14:02:00
  • 善用用户反馈——浅谈用户反馈数据的处理

    2010-07-09 16:58:00
  • MySQL配置文件my.cnf中文版

    2011-09-30 11:06:15
  • LZ77 算法的JS实现

    2010-04-11 22:32:00
  • Oracle数据库的空间管理技巧

    2010-07-26 13:16:00
  • XMLHTTP错误The server name or address could not be resolved 的解决过程

    2009-12-26 18:33:00
  • Window.Open详解

    2008-06-08 13:43:00
  • centos 安装mysql中遇到问题的解决办法

    2010-12-14 15:11:00
  • HTML5 的五个激动人心的特性

    2009-01-02 17:36:00
  • asp之家 网络编程 m.aspxhome.com