老师 $.proxy听不懂什么意思

老师 $.proxy听不懂什么意思

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

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

3回答
好帮手慕夭夭 2020-05-19 18:19:08

同学你好,不是的,这里确实没有用,但不是因为两个this指向一样导致的。之前老师说了,因为handleBtnClick方法中没有用到this,所以传递这个this没有用处。但是如果handleBtnClick中使用了this,传递this的指向就有意义了。参考如下:

1。这两个this一样,是因为它们都在bindEvents这个作用域里面。

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

如果不传递this指向,因为函数中的this指向函数的调用者,这里按钮绑定了点击事件,那么事件执行的函数handleBtnClick中,this就会指向按钮。

2.同学要注意的是,我们传递的this,是把bindEvents中的this指向传递给handleBtnClick。再慢慢理解一下哦。另外,还是建议同学自己把这个案例敲一遍,自己实际测试,例如不传递this和传递this输出的结果做一个比较,这样清晰了,能帮助你更好的去理解和记忆。

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

祝学习愉快~

好帮手慕夭夭 2020-05-19 13:46:50

同学你好,两个this在同一个作用域里,所以指向的是一样的。具体指向什么,建议同学自己把代码写一下,使用console.log输出一下this就知道了。如果老师直接告诉你,你下次还是不会自己动手测试,不会独立解决问题。毕竟已经学到高级阶段了,很快要找工作了。以后工作中会碰到各种问题,自己独立解决就是一个常态。如果没有独立解决问题的能力,你在工作中会寸步难行。

所以建议同学遇到问题,先想办法自己解决。自己解决不了的,可以求助老师。或者自己得出的结论,有拿不准的,可以来找老师求证。这样你才能有更大的提升。加油!

祝学习愉快~

  • 提问者 _追随 #1
    老师 我看出来proxy是改变指向 但是这两个this指向的是同一个东西 那么用proxy不就没意义
    2020-05-19 14:36:08
好帮手慕夭夭 2020-05-19 10:52:20

同学你好,讲解$.proxy()之前,先看如下小例子:

1.为一个div绑定事件,事件中传入一个函数。当点击事件触发的时候,就会执行函数里面的内容。

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

因为this指向函数的调用者,所以事件函数中this指向的div元素。那么在执行greeting方法时,div没有uesename这个属性,所以输出undefined:

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

2. 那么在如上事件中调用greeting,想要让this指向obj,就可以使用$.proxy()方法。如下:

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

$.proxy() 作用如果理解不了,可以换一个理解方式,即调用obj中的greeting方法,并强制设置this的指向。此时this指向的是obj,所以能够输出obj下面的uesename :

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

$.proxy() 方法的语法2,和上面的例子( $("div").click($.proxy(obj, "greeting"));)使用等价:

第一个参数是调用greeting方法,第二个参数是设置this的指向 ,即让this指向obj 。

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

所以也可以输出名字:

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

3.视频中就是第一个参数调用了handleBtnClick方法,然后第二个参数把当前的this指向传递给了handleBtnClick方法。不过案例中,handleBtnClick方法中没有使用this,也可以不传递。

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

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

  • 提问者 _追随 #1
    第三点中两个this指向分别是什么
    2020-05-19 11:02:56
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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