“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并且因为它通常在代码中多次调用,所以它越容易越短