zoukankan      html  css  js  c++  java
  • jq中的isArray方法分析,如何判断对象是否是数组

    <!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>
  • 相关阅读:
    Saltstack
    搭建中小规模集群之rsync数据同步备份
    Python开发【第七篇】:面向对象二
    批量管理
    inotify
    Python开发【第六篇】:面向对象
    网络文件系统NFS
    Linux基础介绍【第九篇】
    Linux基础介绍【第八篇】
    Linux基础介绍【第七篇】
  • 原文地址:https://www.cnblogs.com/subying/p/3199365.html
Copyright © 2011-2022 走看看