我正在通过尝试了解其他人的代码来学习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
相同吗?
答案 0 :(得分:214)
$ self 与 $ 没什么关系,在这种情况下,这是jQuery的别名。有些人喜欢将一个美元符号与变量放在一起,以区分常规变量和jQuery对象。
示例:
var self = 'some string';
var $self = 'another string';
这些被声明为两个不同的变量。这就像在私有变量之前加下下划线。
一种流行的模式是:
var foo = 'some string';
var $foo = $('.foo');
这样,你知道$ foo后来是代码中的缓存jQuery对象。
答案 1 :(得分:27)
这是纯JavaScript。
$
没有什么特别之处。它只是一个可以在变量名中使用的字符。
var $ = 1;
var $$ = 2;
alert($ + $$);
jQuery只是将其核心功能分配给名为$
的变量。您已将this
分配给名为self
的局部变量以及使用this
调用jQuery作为名为$self
的全局变量的参数的结果。
它很难看,很脏,令人困惑,但$
,self
和$self
都是碰巧有相似名称的不同变量。
答案 2 :(得分:9)
不,当然不是。它只是另一个变量名。您所谈论的$()
实际上是jQuery core function。 $self
只是一个变量。如果需要,您甚至可以将其重命名为foo
,这不会改变任何事情。 $
(和_
)是Javascript标识符中的合法字符。
为什么这样做通常只是一些代码约定或避免与反向关键字发生冲突。我经常将它用于$this
,如下所示:
var $this = $(this);
答案 3 :(得分:7)
答案 4 :(得分:2)
作为var名称中的前缀的dollarign是来自hungarian notation概念的用法。