首页 > 代码库 > ExtJs的createCallback和createDelegate方法

ExtJs的createCallback和createDelegate方法

1.createCallBack

  返回一个带有window对象的函数

1 Function.prototype.createCallback = function(){
2   var args = arguments;
3   var method = this;
4   return function() {
5     return method.apply(window, args);
6   };
7 };

 

2.createDelegate

  返回一个函数,传入对象,不传则默认window

 1 createDelegate : function(obj, args, appendArgs)
 2     {
 3         var method = this;
 4         return function() {
 5             var callArgs = args || arguments;
 6            if( appendArgs === true )
 7            {
 8               callArgs = Array.prototype.slice.call(arguments, 0);
 9               callArgs = callArgs.concat(args);
10             }
11             else if(typeof appendArgs == "number")
12             {
13                callArgs = Array.prototype.slice.call(arguments, 0); // copy arguments first
14 
15                 var applyArgs = [appendArgs, 0].concat(args); // create method call params
16                 Array.prototype.splice.apply(callArgs, applyArgs); // splice them in
17             }
18             return method.apply(obj || window, callArgs);
19         };
20     }