• jQuery的一些静态方法


    // 该方法被绑定在jQuery对象上,只能通过$.noConflict()调用
    noConflict: function( deep ) {
      // 取消$在window上的绑定,方法是将_$绑定到window对象上,从而解除其对jQuery的引用
      if ( window.$ === jQuery ) {
        window.$ = _$;
      }
      // 如果传入参数deep为ture,说明用户解除window对象的jQuery属性对jQuery对象的引用,执行$同样的操作
      if ( deep && window.jQuery === jQuery ) {
        window.jQuery = _jQuery;
      }
      // 返回jQuery对象,目的是让其它参数或者对象的属性可以引用到它
      return jQuery;
    },

    // 判断参数中传入的对象是不是函数

    isFunction: function( obj ) {
      return jQuery.type(obj) === "function";
    },

    // 判断参数是不是windwo对象

    isWindow: function( obj ) {
      //这是怎么判断的?利用构造器吗?
      return obj != null && obj === obj.window;
    },

    // 判断参数是不是数字,该数字不一定是number类型。

    isNumeric: function( obj ) {
      // 先判断obj是否可转换为数字,并判断该数字是可穷尽的
      return !isNaN( parseFloat(obj) ) && isFinite( obj );
    },

    // 如果这个对象中没有任何键,则说明他是个空对象。其原型链最顶端的Object.prototype中的属性和方法是不能被遍历的

    isEmptyObject: function( obj ) {
      var name;
      for ( name in obj ) {
        return false;
      }
      return true;
    },

    // 将第二个数组或者对象合并到第一个数组或对象当中  extend扩展对象和merge合并数组
    merge: function( first, second ) {
      var l = second.length,
      i = first.length,
      j = 0;
      // 如果第二个参数是个数组
      // 但是如果第二个对象是类数组呢?我试过的是会丢弃掉类的部分而只merge数组的部分。这是不是jQuery的bug呢?
      if ( typeof l === "number" ) {  
        for ( ; j < l; j++ ) {
        // 将第二个参数添加到第一个参数的后面
        first[ i++ ] = second[ j ];
      }
      // 如果第二个数组中还有值,则继续merge到第一个数组中
      } else {
        while ( second[j] !== undefined ) {
          first[ i++ ] = second[ j++ ];
        }
      }
      //当时数组时,重新设置length的长度,但这不是自动改变的吗?????
      first.length = i;

      return first;
    },

  • 相关阅读:
    如何快速转载CSDN及博客园中的博客
    Ubuntu18.04连不网 报"有线连接未托管"
    Ubuntu18.04的网络配置
    vim基本操作
    Git更新远程仓库代码到本地(转)
    POJ 3253 Fence Repair
    POJ 2503 Babelfish
    POJ 2002 Squares
    POJ 1840 Eqs
    POJ 3274 Gold Balanced Lineup
  • 原文地址:https://www.cnblogs.com/charling/p/3452747.html
Copyright © 2020-2023  润新知