<!DOCTYPE html> <html> <head> <title>jq中的isArray方法分析</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <div class="warp"> </div> <script type="text/javascript"> //下面是从jquery 1.9中抽出来的源码 var class2type = {},core_toString = class2type.toString; //在firefox chrome IE9 IE10中都支持 Array.isArray //使用方法 Array.isArray([]) 返回 true //但是在IE7或更低版是不支持的 var isArray = Array.isArray || function( obj ) { return type(obj) === "array"; }; /* 这一行也不能忽略 948行 jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { class2type[ "[object " + name + "]" ] = name.toLowerCase(); }); 一开始没关注这段代码,结果弄了半天 type([])都是返回 object 那这段代码用JS写出来如下 */ var arr = "Boolean Number String Function Array Date RegExp Object Error".split(" "); for(var i in arr){ class2type[ "[object " + arr[i] + "]" ] = arr[i].toLowerCase(); }; var type = function( obj ) { if ( obj == null ) { return String( obj ); } return typeof obj === "object" || typeof obj === "function" ? class2type[ core_toString.call(obj) ] || "object" : typeof obj; // 相当于return (typeof obj === "object" || typeof obj === "function")?(class2type[ core_toString.call(obj) ] || "object"): typeof obj; }; //这样就可以了 //后来在网上搜索了一下 发现了网上提供的方案是 return Object.prototype.toString.call(obj) === '[object Array]'; //详情查看 http://sofish.de/1591 </script> </body> </html>