老师,请教一下$.proxy( )。

老师,请教一下$.proxy( )。

老师,请教一下$.proxy( ):

正常的$.proxy(function,context)这个是理解的,但是教学视频中,是3个参数,

想请教一下,是怎么样起的什么作用:

$.proxy(mode.show, this, $elem);

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

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

2回答
好帮手慕星星 2019-12-03 19:09:52

同学你好,老师明白你的意思。

但是在这里第一个参数是mode.show,并不是this.show,所以并不存在this指向的问题,这里的this只是为了占位,第三个参数用来传参。可以和前面使用$.proxy方法的代码对比一下。

另外,return返回的是一个{},里面有show和hide方法,但是如果直接调用之后就不是方法了,show和hide方法中没有返回值就是undefined:

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

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

可以理解成这样:

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

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

所以一打开页面就执行了show和hide方法,不需要任何操作,可以测试下代码。

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

好帮手慕星星 2019-12-03 17:33:30

同学你好,这里使用$.proxy方法主要是用来传参数的。

mode.show是方法,例如:

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

这个方法中是有参数的,所以第三个$elem就是传入的参数 。第二个this指向当前作用域,不过在这里没有作用,是用来占位的 。

如果不使用$.proxy方法,直接调用:

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

show是一个方法,加括号会直接调用,不会等到移入或者点击操作的时候再调用 。

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

  • 提问者 张乔升 #1
    哈哈哈,怎么看完好像更迷糊了。 为什么说第二个this没有作用,知识用来做占位的呢? 因为视频中和正常的proxy的目的就是用来改变this的指向: 如果不用proxy,直接引入this,那么这里的this很可能不是我们想要的$box,而是其内部之内最接近的this。 所以,才用的proxy。 咋又成了只是占位。。。。。 还有就是“show是一个方法,加括号会直接调用,不会等到移入或者点击操作的时候再调用 。” 这个好像也和proxy没关系,而且也并不影响什么吧: 因为return的是show:。。。。。。 最终return的是show这个对象。 所以,我也不知道我哪里说得不对, 总之就是看完解释更蒙了。哈哈哈哈。。。。
    2019-12-03 17:41:39
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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