私は他の人のコードを理解しようとすることで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
と同じですか?
$ selfは、この場合のjQueryのエイリアスである$とはほとんど関係ありません。一部の人々は、通常の変数とjQueryオブジェクトを区別するために、変数とドル記号を組み合わせることを好みます。
例:
var self = 'some string';
var $self = 'another string';
これらは2つの異なる変数として宣言されます。プライベート変数の前にアンダースコアを置くようなものです。
やや人気のあるパターンは次のとおりです。
var foo = 'some string';
var $foo = $('.foo');
そうすれば、コードの後半で$ fooがキャッシュされたjQueryオブジェクトであることがわかります。
これは純粋なJavaScriptです。
$
について特別なことはありません。変数名に使用できるのは単なる文字です。
var $ = 1;
var $$ = 2;
alert($ + $$);
jQueryは、そのコア関数を$
という変数に割り当てるだけです。使用しているコードは、this
というローカル変数にself
を割り当て、$self
というグローバル変数への引数としてthis
を指定してjQueryを呼び出した結果です。
くて汚くて混乱しますが、$
、self
、および$self
はすべて、似たような名前を持つさまざまな変数です。
いいえ、確かにそうではありません。これは単なる別の変数名です。あなたが話している$()
は、実際には jQueryコア関数 です。 $self
は単なる変数です。必要に応じて、foo
に名前を変更することもできますが、これによって変更されることはありません。 $
(および_
)は、Javascript識別子の正当な文字です。
これが行われる理由は、多くの場合、単なるコードの規則であるか、逆のキーワードとの衝突を避けるためです。次のように$this
によく使用します。
var $this = $(this);
selfと$ selfは同じではありません。前者は「this」が指すオブジェクトであり、後者は「scope」が「this」が指すオブジェクトであるjQueryオブジェクトです。同様に、$ bodyはbody DOM要素ではなく、body要素をスコープとするjQueryオブジェクトです。
Var名の接頭辞としてのドル記号は、 ハンガリー語表記 の概念の使用法です。