问一下proxy
$.proxy接受一个已有的函数,并返回一个带特定上下文的新的函数。
这样理解对吗:原来没用proxy的时候this指向dom ,用了proxy之后的意思是指 将会自动找到带有show函数的this指向 并替换不带函数的this指向使其的指向正确
31
收起
正在回答 回答被采纳积分+1
2回答
好帮手慕粉
2020-04-16 18:56:22
同学你好,简单的来说就是改变了this的指向,我们可以举个例子看下:
在某些情况下,我们调用JS函数时候,this指针并不一定是我们所期望的那个,例如:
$('#myElement').click(function() { setTimeout(function() { // 这个this指向的是settimeout函数内部,而非之前的html元素 $(this).addClass('aNewClass'); }, 1000); });
通常的一种做法是这样的是在外面声明一个变量, 保存this指向
$('#myElement').click(function() { var that = this;//用that变量把this储存起来 setTimeout(function() { $(that).addClass('aNewClass'); }, 1000); });
在使用jquery框架的情况下, 有一种更好的方式是使用$.proxy函数,$.proxy()接受一个函数,然后返回一个新函数,并且这个新函数始终保持了特定的上下文(context )语境。
此时就可以将1中的例子可以修改成:
$('#myElement').click(function() { setTimeout($.proxy(function() { $(this).addClass('aNewClass'); }, this), 1000); });
同学再理解下。
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星