In: Javascript| Web前台相关
23 Feb 2010javascript中要判断一个变量是否为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]'
姓名:郑玏
性别:男
职业:程序员
爱好:KTV、乒乓球、台球、五子棋、围棋、编程
语言:中文、英语、闽南语
Email: