jQuery的variables语法

我正在学习jQuery,试图了解其他人的代码。 我碰到了这个:

jQuery.fn.myFunc = function(options, callback) { //stuff jQuery(this)[settings.event](function(e) { var self = this, $self = jQuery( this ), $body = jQuery( "body" ); //etc. } //more stuff } 

我的理解是, $是指jQuery对象。 那么为什么把$$self$body ? 和self一样吗?

$ self$无关,在这种情况下,这是jQuery的别名。 有些人更愿意把美元符号和variables放在一起,以区分常规variables和jQuery对象。

例:

 var self = 'some string'; var $self = 'another string'; 

这些被声明为两个不同的variables。 这就像在私有variables之前加上下划线。

一个有点stream行的模式是:

 var foo = 'some string'; var $foo = $('.foo'); 

这样,你知道$ foo是稍后在代码中的一个caching的jQuery对象。

这是纯粹的JavaScript。

$没有什么特别之处。 这只是一个可以用在variables名称中的字符。

 var $ = 1; var $$ = 2; alert($ + $$); 

jQuery只是把它的核心函数赋值给一个名为$的variables。 你已经把this代码赋值给一个名为self的局部variables,并将其作为一个名为$self的全局variables的参数调用jQuery的结果。

这是丑陋的,肮脏的,令人困惑,但$self$self都是不同的variables,碰巧有相似的名字。

不,当然不是。 这只是另一个variables名称。 你谈论的$()实际上是jQuery的核心function 。 $self只是一个variables。 你甚至可以将它重命名为foo如果你想的话,这不会改变事情。 $ (和_ )是Javascript标识符中的合法字符。

为什么这样做通常只是一些代码约定或避免与反向关键字的冲突。 我经常把它用于$this ,如下所示:

 var $this = $(this); 

自我和$ self是不一样的。 前者是“this”指向的对象,后者是“scope”是“this”指向的对象的jQuery对象。 同样,$ body不是body DOM元素,而是范围是body元素的jQuery对象。

美元作为var名称中的前缀是来自匈牙利符号的概念的用法。