我正在通过尝试理解其他人的代码来学习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吗?
Dav*_*ing 215
$ self与$几乎没有关系,在这种情况下,这是jQuery的别名.有些人喜欢将一个美元符号与变量放在一起,以区分常规变量和jQuery对象.
例:
var self = 'some string';
var $self = 'another string';
这些被声明为两个不同的变量.这就像在私有变量之前加下下划线.
一种流行的模式是:
var foo = 'some string';
var $foo = $('.foo');
这样,你知道$ foo后来在代码中是一个缓存的jQuery对象.
Que*_*tin 27
这是纯JavaScript.
没什么特别的$.它只是一个可以在变量名中使用的字符.
var $ = 1;
var $$ = 2;
alert($ + $$);
jQuery只是将它的核心函数赋给一个名为的变量$.您为已this调用的局部变量分配的代码self以及调用jQuery的结果this作为参数调用全局变量$self.
它的丑陋,肮脏,混乱,但是$,self和$self是发生在具有类似名称的所有不同的变量.
不,肯定不是.它只是另一个变量名.在$()你所谈论的实际上是jQuery的核心功能.这$self只是一个变量.foo如果你愿意,你甚至可以将其重命名,这不会改变事情.在$(和_)是一个JavaScript标识符合法字符.
为什么这样做通常只是一些代码约定或避免与反向关键字发生冲突.我经常使用它$this如下:
var $this = $(this);
自我和自我是不一样的.前者是"this"指向的对象,后者是jQuery对象,其"范围"是"this"指向的对象.类似地,$ body不是body DOM元素,而是jQuery对象,其范围是body元素.