为什么应该"这个“;被分配给jQuery中的变量
Why should "this" be assigned to variable in jQuery?
在一些jQuery代码中,我经常看到this
被分配给jQuery中的变量,我不明白这种方法的原因是什么?
这是一个jQuery插件构造函数的例子:
//constructor
function Nullpoll(element, options){
var widget = this;
widget.config = $.extend({}, defaults, options);
widget.element = element;
widget.element.on( "click", function() {
alert("Test")
});
widget.element.one("change", function(e){
widget.element.find("button").removeProp("disabled");
});
this.init();
}
this
的值由它在函数中的调用方式决定。
您可以将其分配给另一个变量:
- 给它一个更具信息性的名称或
- (更常见的),以便值在不同的函数中可用,该函数可以访问第一个函数的范围
在这种特殊情况下,传递给widget.element.one()
的匿名函数使用对Nullpoll
的调用中的this
的值。如果它尝试使用this
关键字,它将获得一个不同的值(该值是什么取决于one
函数如何调用匿名函数)
http://learn.jquery.com/javascript-101/this-keyword/
在JavaScript中,与大多数面向对象的编程语言一样,this
是一个特殊的关键字,用于方法中,用来指代调用方法的对象。这个值是通过一系列简单的步骤来确定的:
- 如果使用
Function.call()
或Function.apply()
调用函数,则this
将被设置为传递给.call()
/.apply()
的第一个参数。如果传递给.call()
/.apply()
的第一个参数是null
或undefined
,则this
将引用全局对象(即web浏览器中的window
对象) - 如果调用的函数是使用
Function.bind()
创建的,则this
将是创建函数时传递给.bind()
的第一个参数 - 如果函数是作为对象的方法调用的,
this
将引用该对象 - 否则,该函数将作为一个独立函数调用,不附加到任何对象,
this
将引用全局对象
在范围内使用内联回调(例如示例中的事件处理程序)时,回调中的this
值通常与父范围不同。因此,如果您希望从这些回调中访问父作用域中this
的值,那么将其保存到父作用域的局部变量是一种常见的设计模式。然后,在回调中,即使this
在回调中可能有不同的值,您仍然可以从父作用域引用该值。
第二个好处是,一些最小化器可以通过使用局部变量而不是this
来生成较小的代码,因为最小化器可以将局部变量重命名为单个字符变量,但不能重命名this
。
类似的问题,这里有很多答案:var me=this的值是多少;
this
指向页面上调用特定方法的元素!
参考http://learn.jquery.com/javascript-101/this-keyword/
相关文章:
- 如何在jQuery中将函数的输出分配给变量
- 如何在javascript中找到分配给元素的类(没有jQuery)
- 如何在jQuery中将链接函数分配给变量
- jQuery在页面加载时分配点击事件处理程序
- 在jQuery中为同一类选择器分配不同的值
- jQuery插件在为元素分配id时停止工作
- Javascript / JQuery循环访问已发布的ajax数据字符串以为其分配新值
- 将 jQuery 函数分配给变量不起作用,但包装它不起作用
- 使用 JQuery 从另一个元素的 id 为图像分配属性
- 在jquery中创建和分配一个css类
- JQuery在创建后选择html5视频并分配EventListner
- 在jquery中,将文本框值分配给标签是正确的编码方式吗
- 如何在使用jQuery$.when执行多个请求时将响应分配给请求
- 如何从成功中获取 ajax 响应并使用 jQuery 将其分配给变量中
- 如何在jquery.ech()函数中分配元素值
- jQuery表单处理,如何在回调时重新分配函数
- 单击导航选项卡时分配jQuery功能
- 为什么不能访问分配jquery对象的函数内部的变量
- 如何发送或分配Jquery变量值给php变量
- 为文本按钮分配Jquery列表值