zoukankan      html  css  js  c++  java
  • jquery源码--isWindow isArraylike makearray

    1.$.isWindow 判断是不是window对象

    var isWindow = function(obj){
         return obj != null && obj == obj.window;
    //window对象有个window属性指向自己      
    }

    2.isArraylike 判断一个对象是不是数组或类数组对象

    var isArrayLike = function(obj){
            var length = obj.length,
                type = $.type(obj);
            if(type == 'function' || $.isWindow(obj) ){
            //function和window都有length属性
                return false;
            }
            if(obj.nodeType == 1 && length){
                return true;
            }
            
            return type === 'array' || length === 0 ||
                    typeof length === 'number' && length > 0 && (length - 1) in obj;
        // typeof length === 'number' && length > 0 && (length - 1) in obj就是针对类数组对象的
      /*类数组对象举例
    *var obj = {'0' : 0,'1' : 1, '2' : 2,'length' : 3}
    */ }

    3.$.makeArray()  强制转换成数组类型

    var makeArray = function(arr, result){
            var ret = result || [];
            if(arr != null){
                if(isArraylike(arr)){//string array
                    $.merge(ret, typeof arr === 'string' ? [arr] : arr);//$.merge可以修改第一个参数
                }else{
                    [].push.call(arr);
                }
            }
            return arr;
        };

    下面是各种数值类型作为Object参数时的返回,例如Object(true),它返回Boolean {},string类型返回一个类数组对象,array类型直接返回一个数组,date类型返回一长串,number类型返回number {},等等。所以通过isArraylike函数过滤之后,只剩下array和string类型了。

  • 相关阅读:
    Codeforces Round #545 (div 1.)
    THUSC 2017 大魔法师
    loj #6216. 雪花挂饰
    [NOI Online #2 提高组]涂色游戏
    [NOI Online #2 提高组]子序列问题
    [NOI Online #1 入门组]跑步
    备战noip week7
    [NOI Online #3 提高组]优秀子序列
    20201017校测
    springboot基于maven多模块项目搭建(直接启动webApplication)
  • 原文地址:https://www.cnblogs.com/it-snail/p/3873359.html
Copyright © 2011-2022 走看看