proxy()的this指向

proxy()的this指向

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

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

函数里的this不是指向函数的最后调用对象吗?图一图二里不都是this.$elem 调用hover函数吗,为什么两个括号里的this指向却不一样

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕星星 2020-01-21 17:09:15

同学你好,问题解答如下:

1、当执行hover方法的时候,$.proxy()方法就会执行,$调用的,也就是jquery调用的。

2、前面老师说过这里上下文指的是$.proxy()方法中传入的函数所在对象名称,也就是show函数所在对象名称,show方法是在Dropdown绑定的:

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

所以$.proxy()方法中的this指向的是Dropdown,改变了this的指向。可以再理解下。

祝学习愉快!

好帮手慕星星 2020-01-21 15:26:18

同学你好,是proxy方法的原因。

一般情况下函数里的this指向函数的最后调用对象,这里理解没有问题

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

但是show方法是在Dropdown对象上的,this.$elem元素上并没有此方法,所以this.show调用的时候就会报错。

老师为了解决这个问题,使用了$.proxy() ,该方法接受一个已有的函数,并返回一个带特定上下文的新的函数。这里上下文指的是show函数所在对象名称,也就是Dropdown,所以改变了this的指向。可以再理解下哦。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • 提问者 qq_宝慕林0111505 #1
    proxy(this.show, this)函数是谁调用的,第二个参数this应该就是指上下文对象吧,那这个this为什么不是this.$elem,而是Dropdown?
    2020-01-21 15:38:12
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

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

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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