Function.prototype.binding = function() {
    if (arguments.length < 2 && typeof arguments[0] == "undefined") return this;
    var __method = this, args = jQuery.makeArray(arguments), object = args.shift();
    return function() {
        return __method.apply(object, args.concat(jQuery.makeArray(arguments)));
    }
}

解决方案 »

  1.   

    args.shift()//delete first element and return the deleted elementeg:
    args=["a","b","c"];
    object = args.shift();
    alert(object);//a
    alert(args);//b,c
      

  2.   

    这段代码的意思是将一个方法绑定到指定的对象上去。 现举例说明:
    定义函数:
    function foo()
    {
      return this.x + this.y;
    }
    有一个变量
    var z = {};
    z.x = 10;
    z.y = 20;(foo.binding(z))();返回30。
    通过这种绑定, 可以将算法和对象分离。
      

  3.   

    上面的例子没有考虑到参数的传递, 重新举例:
    function foo(x, y)
    {
    return this.i + this.j + x + y;
    }有一个变量
    var z = {};
    z.i = 10;
    z.j = 20;
    (foo.binding(10, 20))();返回60。