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 documentproxy(document,show)(3,4); //12 documentproxy(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);});