“this”,“$ this”和“$(this)”之间有什么区别?
这三种forms有什么区别:
this $this $(this)
在典型的用法中,您通常会看到它们( $this用法可能会有所不同):
-
this– 指当前处理程序中的DOM元素,但在其他情况下可能完全是另一个对象,但始终是上下文。 -
$this– 通常由var $this = $(this)一个caching版本的jQuery包装版本以提高效率(或者在$(this)以获得相同的许多情况)。 -
$(this)– 元素的jQuery包装版本,所以你可以访问它的所有方法 (具体在$.fn)。
-
this是调用方法的对象 -
$this是一个没有特别意义的variables名称不多的variables -
$(this)调用命名不当的函数$,并将其作为唯一的参数
在jQuery事件处理程序中:
-
this是您为事件处理程序分配的DOM元素 -
$(this)– 是从该元素创build的jQuery对象 -
$this– 通常是一个保存$(this)的结果的variables,
更普遍:
-
这里面的函数是指函数被调用的对象或原语。 当一个函数被用作构造函数时,它指向正在构build的新对象。 在任何函数之外,
this是指全局对象(非严格模式下的window)。您可以在MDN上find一个很好的详细解释 。
-
$这是一个variables名称。 在JavaScript中,variables名称可以以
$开头。 有些人喜欢用它作为包含jQuery对象的variables的前缀:var body = document.body; // no prefix for a plain DOM object var $body = jQuery('body'); // prefix for the same object wrapped in jQuery var $this = $(this); -
$(this)是一个函数调用,其中
$是一个函数名,this是它的参数:var $ = alert; $(this); // [object Window]$本身没有任何特殊的含义。 但jQuery将$()函数定义为jQuery()的简写。 根据它的参数,这个函数可以做很多不同的事情 。
在jQuery的上下文中,“this”是调用方法的对象。 “$ this”确实是一个没有特殊含义的variables, '$(this)'将'this'传递给jQuery,只要'this'是一个DOM对象,jQuery就会返回一个与'this'关联的jQuery对象。
你的问题会更好地服务于更多的上下文。
不过,我假设你在一个元素事件的callback上下文中询问variables( click举例)。
-
this是您的处理程序的上下文(通常是DOM元素,在DOM事件处理程序的情况下) -
$this通常用于存储$(this)的结果 -
$(this)返回包装this的jQuery对象 – 请参阅jQuery文档以获取更多信息。
扩大了大卫所说的话:
-
$this通常用于在当前范围内拥有this对象的副本。 例如用var $this = this;你可以在当前范围的任何地方使用variables$this,并且始终能够引用该对象,否则,如果仅仅引用this对象,就会改变this…我个人不喜欢$this命名约定,喜欢var parentScope -
$(this)是jQuery或PrototypeJs等框架使用的函数(var $ = function(){})。 它使用的原因是因为$非常容易input,而不是someLongFunctionName并且因为它通常在代码中多次调用,所以它越容易越短