var core_slice = Array.prototype.slice;
var proxy = function(context,fn) {
var args, proxy;
if ( typeof fn !== 'function') {
return undefined;
}
args = core_slice.call( arguments, 2 );
proxy = function() {
return fn.apply( context, args.concat( core_slice.call( arguments ) ) );
};
return proxy;
};
//调用1:
var show = function(){
alert(this);
}
proxy(document,show)(); //document
//调用2:
var show = function(n1,n2){
alert(n1*n2);
alert(this);
}
proxy(document,show,3,4)(); //12 document
proxy(document,show)(3,4); //12 document
proxy(document,show,3)(4); //12 document
//调用3:
var obj = {
show:function(n1,n2){
alert(n1*n2)
alert('obj -> show');
}
};
document.onclick = proxy(obj,function(){
this.show(3,4);
});