这两个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。
改变this指向后, 可以打印一下show方法里的this指向哦
打印结果
没有改变this指向
打印结果
综上, 可以看出, this都是指向Dropdown函数实例化之后的对象。同学可以结合代码测试理解
如果帮助到了你,欢迎采纳!
祝学习愉快~~~
相似问题