jquery中proxy的用法

来源:互联网 发布:c语言杨辉三角七行七 编辑:程序博客网 时间:2024/06/05 18:50

$.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));


菜鸟学前端,以后慢慢总结自己学习的知识,如果哪里写的不好,请大神指教。



最糟糕的是人们在生活中经常受到错误志向的阻碍而不自知,真到摆脱了那些阻碍时才能明白过来。 —— 歌德


原创粉丝点击