首页 > 代码库 > JQuery_2.1.0_日记 5.2

JQuery_2.1.0_日记 5.2

$.方法

(1)$.merge(first, second)
    合并两个数组或类数组,将第二个数组添加到第一个数组的末尾

(2)$.grep(elems, callback, invert)
    使用callback对elems进行过滤,如果invert设置为true.则返回保留callback返回值为false的元素数组,如果invert设置为false则返回callback返回值为true的元素数组.

     Test_Script
     var arr = [‘a‘ ‘b‘ ‘c‘ ]
   arr = $.grep(arr, function (){
      //arguments[0]为elem,arguments[1]为elem在数组 中的索引
      if (arguments[1] === 1) {
          return false ;
      } else {
         return true ;
      }
   }, true );
   alert(arr[0]); //‘b‘


(3)$.proxy(fn, context[,args1][,args2]....)
   为fn绑定上下文执行环境,返回代理后的对象
   Test_Script
   function a() {
       alert(arguments.length) //3
       alert( this .JQuery);  //11
   }
   var proxy = $.proxy(a, {JQuery: ‘11‘ }, ‘arg1‘ ‘arg2‘ );
   proxy(‘args3‘);
   
   $.proxy源码
   proxy: function( fn, context ) {
               var tmp, args, proxy;

               //如果参数context为字符串时修正参数
               if typeof context === "string" ) {
                     tmp = fn[ context ];
                      //执行上下文第一个参数
                     context = fn;
                      //函数为第一个参数的名为第二个参数的属性值
                     fn = tmp;
              }

               // Quick check to determine if target is callable, in the spec
               // this throws a TypeError, but we will just return undefined.
               if ( !jQuery.isFunction( fn ) ) {
                      return undefined ;
              }

               // Simulated bind
               //2个后的参数作为代理后对象的参数
              args = slice.call( arguments, 2 );
               //代理后的函数
               proxy = function() {
                      return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
              };

               // Set the guid of unique handler to the same of original handler, so it can be removed
               //设置代理函数的唯一标示
               proxy.guid = fn.guid = fn.guid || jQuery.guid++;

               return proxy;
       },