这两个this分别代表什么?又分别是什么元素(jq或dom)

来源:3-2 用构造函数的形式重写dropdown模块

hyperse

2019-07-06 20:31:07

感觉老师没有说明白


this.$elem.hover($.proxy(this.show,this),);里面的两个this

写回答

1回答

好帮手慕慕子

2019-07-07

同学你好, 这里的this都是指向的Dropdown函数实例化之后的对象。

因为hover事件中的this指向的是触发事件的元素,也就是this.$elem,而show和hide方法是在Dropdown函数上的,元素上并没有,所以需要使用$.proxy 方法改变修改this的指向, $.proxy接受一个已有的函数,并返回一个带特定上下文的新的函数。将this指向Dropdown函数,而不是执行hover事件的元素this.$elem。

  1. 改变this指向后, 可以打印一下show方法里的this指向哦

    http://img.mukewang.com/climg/5d21624e0001bad706340181.jpg

    打印结果

    http://img.mukewang.com/climg/5d2162670001d93d15450170.jpg

  2. 没有改变this指向

    http://img.mukewang.com/climg/5d2162d400010fad10480679.jpg

    打印结果

    http://img.mukewang.com/climg/5d2162c10001f10611690263.jpg

综上, 可以看出, this都是指向Dropdown函数实例化之后的对象。同学可以结合代码测试理解

如果帮助到了你,欢迎采纳!

祝学习愉快~~~


0

0 学习 · 14456 问题

查看课程