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名称中的前缀是来自匈牙利符号的概念的用法。