问老师一个关于$.proxy的问题

这里说this指向外面,没有理解意思
我知道谁调用方法,方法内的this就指向谁,$.proxy(),调用的对象不是$符号吗,这个是谁啊?
this指向$怎么就成了this指向外面了?
20
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕言
2020-08-23 20:51:15
同学你好, 这里用$.proxy()可以理解为改变this的指向,作用域上下文。 可以结合下面的简单示例理解
1. 在某些情况下,我们调用JS函数时候,this指针并不一定是我们所期望的那个,例如:
$('#myElement').click(function() {
setTimeout(function() {
$(this).addClass('aNewClass');
}, 1000);
});通常的一种做法是这样的是在外面声明一个变量, 保存this指向
$('#myElement').click(function() {
var that = this;//用that变量把this储存起来
setTimeout(function() {
$(that).addClass('aNewClass');
}, 1000);
});2. 在使用jquery框架的情况下, 有一种更好的方式是使用$.proxy函数,$.proxy()接受一个函数,然后返回一个新函数,并且这个新函数始终保持了特定的上下文(context )语境,如下:
jQuery.proxy( function, context ) /*function:将要改变上下文语境的函数。 *context:函数的上下文语境(`this`)会被设置成这个 object 对象。*/
此时就可以将1中的例子可以修改成:
$('#myElement').click(function() {
setTimeout($.proxy(function() {
$(this).addClass('aNewClass');
}, this), 1000);
});3. 结合上面的简单示例, 来分析老师的这种写法, 就是通过proxy方法, 让this.show中的this指向Downdown这个对象
如果我的回答帮到了你,欢迎采纳,祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星