<!doctype html>
<html>
<head lang="zh">
<meta charset="utf-8">
<title>灵域</title>
<meta name="renderer" content="webkit">
<style>
</style>
<script src="http://yygame.duowan.com/Web/Public/Jcode/js/jquery.min.js"></script>
</head>
<body >
<button>1111</button>
<a>2222</a>
<script>
var name = 'tmt';
var person ={name:'magicfly',agae:{'a':10}}
function showName(){
alert(this.name)
}
$.proxy(showName,person)//是返回一个新的函数,没执行
//$.proxy(showName,person)();//这才要执行的函数,注意加括号 $.proxy(fn,context)
$('button').click($.proxy(showName,person))
//另外一种用法,$.proxy(context,name),
show = {
name : 12,
Name :function(){
alert(this.name);
}
}
$('a').click($.proxy(show,'Name'));
/*
// A global GUID counter for objects
guid: 1,
// Bind a function to a context, optionally partially applying any
// arguments.
proxy: function( fn, context ) {
var args, proxy, tmp;
if ( typeof context === "string" ) {
tmp = fn[ context ];
context = fn;
fn = tmp;
}
// Quick check to determine if target is callable, in the spec
// this throws a TypeError, but we will just return undefined.
if ( !jQuery.isFunction( fn ) ) {
return undefined;
}
// Simulated bind
args = slice.call( arguments, 2 );
proxy = function() {
return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
};
// Set the guid of unique handler to the same of original handler, so it can be removed
proxy.guid = fn.guid = fn.guid || jQuery.guid++;
return proxy;
}
*/
</script>
</body>
</html>
发现JQ的proxy和JS的APPLY柯里化差不多