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

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

http://img1.sycdn.imooc.com//climg/5f42309f09a98f2a07060120.jpg

这里说this指向外面,没有理解意思

我知道谁调用方法,方法内的this就指向谁,$.proxy(),调用的对象不是$符号吗,这个是谁啊?

this指向$怎么就成了this指向外面了?

正在回答 回答被采纳积分+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 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师