2009-09-23 8 views
37

jQueryやPrototypeなどの一般的なJavaScriptライブラリで(シングル)ドル記号の使用を理解します。私はまた、PHP(変数変数)の二重ドル記号の意義を理解しています。ディーンエドワーズは有名なダブルドル記号を使用していますaddEvent() JavaScript機能。ここでは、二重ドル記号の使用を含む除き、次のとおりです。JavaScriptダブルドル記号

function addEvent(element, type, handler) { 
    // assign each event handler a unique ID 
    if (!handler.$$guid) handler.$$guid = addEvent.guid++; 
    // create a hash table of event types for the element 
    if (!element.events) element.events = {}; 
    // create a hash table of event handlers for each element/event pair 
    var handlers = element.events[type]; 
    if (!handlers) { 
    handlers = element.events[type] = {}; 
    // store the existing event handler (if there is one) 
    if (element["on" + type]) { 
     handlers[0] = element["on" + type]; 
    } 
    } 
    // store the event handler in the hash table 
    handlers[handler.$$guid] = handler; 
    // assign a global event handler to do all the work 
    element["on" + type] = handleEvent; 
}; 
// a counter used to create unique IDs 
addEvent.guid = 1; 

私が何を読んでから、その基準が主な原因に今日無視されているが、ドル記号は正式に、コード生成ツールのJavaScriptで意義を持っています前述のJavaScriptライブラリでドル記号が広く使用されています。

誰もJavaScriptのダブルドル記号のこの使用法についてどんな光を当てることができますか?

ありがとうございました!

+1

'addEvent'はIEでふるいのように漏れ出すように私には思えます。 – kangax

答えて

74

私はこの機能を書いています。 :)

$$接頭辞には特別な意味はなくなりました。パッカーが人気を博していた時に私は戻ってきたという表記でした。 Packerはこの接頭辞で変数名を短縮します。現在、Packerは変数名を自動的に短縮して、この表記が冗長になります。

簡単な答えでは、$記号はJavaScriptの有効な識別子なので、醜い変数名を探しているだけです。;)

+8

正式な答えをありがとう...馬の口からそれを聞いていいです、そう言えば! – NewToThis

3

私が知る限り、ドル記号は変数名で使用できる単なる文字です。周囲を混乱させるべきではない財産を示すことが慣例となりうる。

私の推測では、著者は$$guidを使用して既存のプロパティ名との衝突を避けることができます。彼はたぶん__guidかそれに似た何かを使用していた可能性があります。

20

実際には、開発者の命名規則です。 「$$」は、「aa」とすることもできます。

前述のとおり、$()は、さまざまなJavaScriptライブラリでほぼ標準となっています。 「それらすべてを支配する1つの機能」、そうですか?しかし、それはJS自体に固有のものではないことを覚えておいてください。それはちょうどdocument.getElementById()を置き換えるためにキャッチした関数名です。

だから、それと言って、$$は何でもかまいません。それだけで変数/関数名-だけのようにすべての残りの部分だ、つまり

function $$$$$$$$(){ 
    //i've got dollar signs in my eyes! 
} 

:ヘック、あなたもこのような機能を持つことができます。

+0

それよりもそれ以上はないことを確認してくれたことに感謝します! – NewToThis

6

他人と同様に、$$は任意の識別子です。

JavaScriptツールキットMochiKitは、特定のオブジェクトに一致するすべての要素をラップせずに、select elements using CSS selector syntaxと同じように識別される関数をjQueryと同様に予約します。

だから、それは特にそうではありません。

+6

私はなぜ*&@#$ !!を知りたいです人々はこれで私を投票して下さった。あなたがダウン投票に行くなら、少なくともWHYに言及するのに十分なほどいい。 –

1

ダブルドル記号は、次の用語で参照されている -

//getElementById  
    function $$(id){ 
    return document.getElementById(id); 
    } 
+0

良いキャッチ。これは私が探していたものです...これはどこに定義されていますか? Mozilla Developer Networkの功績のどこかにリファレンスがありますか? – zipzit