proxy()的this指向
来源:3-2 用构造函数的形式重写dropdown模块
qq_宝慕林0111505
2020-01-21 15:13:37
函数里的this不是指向函数的最后调用对象吗?图一图二里不都是this.$elem 调用hover函数吗,为什么两个括号里的this指向却不一样
2回答
好帮手慕星星
2020-01-21
同学你好,问题解答如下:
1、当执行hover方法的时候,$.proxy()方法就会执行,$调用的,也就是jquery调用的。
2、前面老师说过这里上下文指的是$.proxy()方法中传入的函数所在对象名称,也就是show函数所在对象名称,show方法是在Dropdown绑定的:
所以$.proxy()方法中的this指向的是Dropdown,改变了this的指向。可以再理解下。
祝学习愉快!
好帮手慕星星
2020-01-21
同学你好,是proxy方法的原因。
一般情况下函数里的this指向函数的最后调用对象,这里理解没有问题
但是show方法是在Dropdown对象上的,this.$elem元素上并没有此方法,所以this.show调用的时候就会报错。
老师为了解决这个问题,使用了$.proxy() ,该方法接受一个已有的函数,并返回一个带特定上下文的新的函数。这里上下文指的是show函数所在对象名称,也就是Dropdown,所以改变了this的指向。可以再理解下哦。
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
相似问题