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

In: Javascript| Web前台相关

23 Feb 2010

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

相关日志:

Sign up for PayPal and start accepting credit card payments instantly.

Comment Form

关于博主

姓名:郑玏

性别:男

职业:程序员

爱好:KTV、乒乓球、台球、五子棋、围棋、编程

语言:中文、英语、闽南语

Email:

工作技能

  • 桌面语言:C、C++、C#、Java
  • Web语言:PHP、HTML/XHTML、CSS、Javascript
  • Xml相关:XML、XSLT、SCHEMA
  • 数据库相关:Mysql、MS Sql
  • 建模相关:UML
  • 擅长:正则表达式、Web相关语言、Xml相关、C、C++、C#、Mysql

 

2010-02月
« Jan   Mar »
1234567
891011121314
15161718192021
22232425262728
  • 李鸿萱: 呵呵~~!好好休息吧~~!有空再聊啊~~!(话说,老大是厦大,还是嘉庚的? [...]
  • Jennal: @李鸿萱 哈哈,是啊,校友~ 居然会有校友用我的软件,真是荣幸~我去年 [...]
  • 李鸿萱: 囧,校友?真的假的?那才没建几年呢~~!我现在是大一升大二~~!在读日语 [...]
  • Jennal: @李鸿萱 好巧。。我也在那里上过学。。 [...]
  • 李鸿萱: 呵呵 是吗? 我现在在厦门漳州校区读大学, 正好夹中间~~! 话说,太多 [...]