$.proxy 方法接受一个已有的函数,并返回一个带特定上下文的新的函数。
(此处上下文我自己的理解是this的指向,是语句执行的当前环境context)
该方法通常用于向上下文指向不同对象的元素添加事件。
$(selector).proxy(function,context)
第一个参数是要执行的函数,第二个参数的context代替第一个函数中的context。
在第二个参数context(上下文)中执行第一个参数中的函数。
$(selector).proxy(context,name)
第一个参数是上下文,第二个参数是上下文中已经存在的函数(但是函数内部this指向函数本身),将函数的上下文代理成第一个参数。
HTML:
<div
id="tt1">
hiphop界最会敲代码的男人
</div>
<br>
<button>代码界最会hiphop的男人</button>
<p></p>
JS:
var test1 =function(){
this.name ="test1";
$('#tt1').on('click',$.proxy(this.myClick,this))
}
test1.prototype.myClick =function(event){
alert(this.name);
alert(event.currentTarget.nodeName);
}
var x =newtest1();
// 这个是第一个$.proxy(function, context)的用法
var test2 = {
name: 'ztw',
age: '22',
dream: 'enjoy the life',
go: function(){
$('p').after("<br> Name: " +this.name +"<br>
Age:" + this.age +"<br> Dream:" +this.dream);
}
};
$('button').on('click',$.proxy(test2,"go"));
// 这是第二个$.proxy(context, name)
如果想要在test2的上下文中代理另一个函数,使用第一个方法。
JS:
var go2 =function(){
$('p').after(this.name +',' +this.age
+',' +this.dream);
}
$('button').on('click',$.proxy(go2,test2));
菜鸟学前端,以后慢慢总结自己学习的知识,如果哪里写的不好,请大神指教。
最糟糕的是人们在生活中经常受到错误志向的阻碍而不自知,真到摆脱了那些阻碍时才能明白过来。