proxy()的this指向

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

qq_宝慕林0111505

2020-01-21 15:13:37

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

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

函数里的this不是指向函数的最后调用对象吗?图一图二里不都是this.$elem 调用hover函数吗,为什么两个括号里的this指向却不一样

写回答

2回答

好帮手慕星星

2020-01-21

同学你好,问题解答如下:

1、当执行hover方法的时候,$.proxy()方法就会执行,$调用的,也就是jquery调用的。

2、前面老师说过这里上下文指的是$.proxy()方法中传入的函数所在对象名称,也就是show函数所在对象名称,show方法是在Dropdown绑定的:

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

所以$.proxy()方法中的this指向的是Dropdown,改变了this的指向。可以再理解下。

祝学习愉快!

0

好帮手慕星星

2020-01-21

同学你好,是proxy方法的原因。

一般情况下函数里的this指向函数的最后调用对象,这里理解没有问题

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

但是show方法是在Dropdown对象上的,this.$elem元素上并没有此方法,所以this.show调用的时候就会报错。

老师为了解决这个问题,使用了$.proxy() ,该方法接受一个已有的函数,并返回一个带特定上下文的新的函数。这里上下文指的是show函数所在对象名称,也就是Dropdown,所以改变了this的指向。可以再理解下哦。

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

0
hq_宝慕林0111505
h proxy(this.show, this)函数是谁调用的,第二个参数this应该就是指上下文对象吧,那这个this为什么不是this.$elem,而是Dropdown?
h020-01-21
共1条回复

0 学习 · 14456 问题

查看课程