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)));
}
}
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)));
}
}
args=["a","b","c"];
object = args.shift();
alert(object);//a
alert(args);//b,c
定义函数:
function foo()
{
return this.x + this.y;
}
有一个变量
var z = {};
z.x = 10;
z.y = 20;(foo.binding(z))();返回30。
通过这种绑定, 可以将算法和对象分离。
function foo(x, y)
{
return this.i + this.j + x + y;
}有一个变量
var z = {};
z.i = 10;
z.j = 20;
(foo.binding(10, 20))();返回60。