2009-09-22 9 views
7

私は$をどうやっているのだろうと思っていました。 $ .ajax({...});作業?それは私にとって意味をなさない。確かにメンバーとしての.ajaxは理にかなっていますが、$ isntは変数名ですか?またはそれは?どのように定義されていますか?

+6

jqueryのソースの読み取りを持っています。この関数は、メンバー 'ajax'を持つJQueryオブジェクトを効果的に返します。 – Lazarus

+1

@Lazarus:実際には、$関数は呼び出されたときにjQueryオブジェクトを返しますが、ここではそうではありません。 $はJSのすべての関数と同様、オブジェクトであり、独自のプロパティ(つまりajax)を持つことができます。 $( "")を呼び出すときに返されるjQueryオブジェクトには、ajaxプロパティがありません(typeof $。 "と比較してtypeof $(" ")ajaxを試してください) – figha

答えて

16

$はjQueryと同じです。つまり、jQuery.ajax(...)などを書くことができます。

$はJavascriptの変数名の正当な文字です。たとえば、PHPやPerlのように、特別な意味はありません。ソースから

10

// Map over jQuery in case of overwrite 
_jQuery = window.jQuery, 
// Map over the $ in case of overwrite 
_$ = window.$, 

jQuery = window.jQuery = window.$ = function(selector, context) { 
// The jQuery object is actually just the init constructor 'enhanced' 
    return new jQuery.fn.init(selector, context); 
}, 

それは、そのようなあなたが言及ajax機能としての性質を持つ機能(ファーストクラスのオブジェクト)です。

"$"は変数名の有効な文字です。コードスニペットからわかるように、$jQueryと同じです。

1

$は、Javascriptの変数名で使用できる唯一の有効な文字の1つです。 JQueryと他のライブラリは$をjQueryオブジェクトを初期化する関数に初期化することを利用しています。

私の記憶が正しければ、コードは多少、次のようになります。

$ = window.jQuery = function(){ 
    return new jQuery(args); 
} 
2

$これは短いのjQueryを参照するjQueryライブラリ内で定義されています。この「ウィンドウ$」、「$」は、ウィンドウオブジェクト環境に属し

var 
    // Will speed up references to window, and allows munging its name. 
    window = this, 
    // Will speed up references to undefined, and allows munging its name. 
    undefined, 
    // Map over jQuery in case of overwrite 
    _jQuery = window.jQuery, 
    // Map over the $ in case of overwrite 
    _$ = window.$, 

: あなたはライブラリをダウンロードして、最初の行を見ることができます。

1

javascriptでは、関数はオブジェクトです(変数に含めることができます)。 このように、プロパティ(および値としての機能を持つプロパティのみのメソッド)を持つことができます。これを試してみてください:

function test() { 
    alert("hey!"); 
} 
test.foo = function (msg) { 
    alert("you said: "+msg); 
}; 

test(); //alerts "hey!" 
test.foo("123") //alerts ""you said: 123". 

//note that I'm not calling test().foo(), 
//as test() returns nothing, though it could 
//return an object (with a foo() or any other method itself!) 

これはjQueryの場合のようなものです。

2

としてはMozilla's JavaScript Guide含め、JavaScriptのリソースの数で説明:

文字で始まる必要があり

A JavaScriptの識別子、アンダースコア(_)、またはドル記号($)。後続の文字は数字(0〜9)でもかまいません。 JavaScriptでは大文字と小文字が区別されるため、文字には "A"から "Z"(大文字)と "a"から "z"(小文字)の文字が含まれます。

ので、次は、JavaScriptで(無分別かかわらず)すべての法的です:、それは関数名です

var $ = function() {}; 

var ____ = 0; 

var __$__$ = 1; 

function _$_$_$_(_, __, $_$) { 
    return (_ * __) + $_$; 
} 

alert(_$_$_$_(3,2,1)); // shows 7 
関連する問題