老师 $.proxy听不懂什么意思
来源:2-6 MVVM模式
_追随
2020-05-18 22:02:09
请解释一下
3回答
好帮手慕夭夭
2020-05-19
同学你好,不是的,这里确实没有用,但不是因为两个this指向一样导致的。之前老师说了,因为handleBtnClick方法中没有用到this,所以传递这个this没有用处。但是如果handleBtnClick中使用了this,传递this的指向就有意义了。参考如下:
1。这两个this一样,是因为它们都在bindEvents这个作用域里面。

如果不传递this指向,因为函数中的this指向函数的调用者,这里按钮绑定了点击事件,那么事件执行的函数handleBtnClick中,this就会指向按钮。
2.同学要注意的是,我们传递的this,是把bindEvents中的this指向传递给handleBtnClick。再慢慢理解一下哦。另外,还是建议同学自己把这个案例敲一遍,自己实际测试,例如不传递this和传递this输出的结果做一个比较,这样清晰了,能帮助你更好的去理解和记忆。

祝学习愉快~
好帮手慕夭夭
2020-05-19
同学你好,两个this在同一个作用域里,所以指向的是一样的。具体指向什么,建议同学自己把代码写一下,使用console.log输出一下this就知道了。如果老师直接告诉你,你下次还是不会自己动手测试,不会独立解决问题。毕竟已经学到高级阶段了,很快要找工作了。以后工作中会碰到各种问题,自己独立解决就是一个常态。如果没有独立解决问题的能力,你在工作中会寸步难行。
所以建议同学遇到问题,先想办法自己解决。自己解决不了的,可以求助老师。或者自己得出的结论,有拿不准的,可以来找老师求证。这样你才能有更大的提升。加油!
祝学习愉快~
好帮手慕夭夭
2020-05-19
同学你好,讲解$.proxy()之前,先看如下小例子:
1.为一个div绑定事件,事件中传入一个函数。当点击事件触发的时候,就会执行函数里面的内容。

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

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

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

$.proxy() 方法的语法2,和上面的例子( $("div").click($.proxy(obj, "greeting"));)使用等价:
第一个参数是调用greeting方法,第二个参数是设置this的指向 ,即让this指向obj 。

所以也可以输出名字:

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

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