- <!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>
- //该片段来自于http://www.codesnippet.cn/detail/151120137220.html
来源: http://www.codesnippet.cn/detail/151120137220.html