2009-09-23 17 views
37

मैं jQuery और प्रोटोटाइप जैसे लोकप्रिय जावास्क्रिप्ट पुस्तकालयों में (एकल) डॉलर के संकेत के उपयोग को समझता हूं। मैं PHP (परिवर्तनीय चर) में डबल डॉलर के संकेत के महत्व को भी समझता हूं। डीन एडवर्ड्स अपने प्रसिद्ध addEvent() जावास्क्रिप्ट फ़ंक्शन में डबल डॉलर के चिह्न का उपयोग करता है। ,जावास्क्रिप्ट डबल डॉलर साइन

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; 

मैं क्या पढ़ा है से, डॉलर चिह्न केवल आधिकारिक तौर पर कोड पीढ़ी उपकरणों के लिए जावास्क्रिप्ट में महत्व है, हालांकि यह है कि मानक काफी हद तक वजह से आज नजरअंदाज कर दिया है: यहाँ डबल डॉलर चिह्न के उपयोग से युक्त छोड़कर एक है डॉलर उपर्युक्त जावास्क्रिप्ट पुस्तकालयों में व्यापक उपयोग का संकेत देता है।

क्या कोई जावास्क्रिप्ट में दोहरे डॉलर के हस्ताक्षर के इस उपयोग पर कोई प्रकाश डाल सकता है?

बहुत बहुत धन्यवाद!

+1

यह है कि इस 'addEvent' IE में एक छलनी की तरह रिसाव हो जाएगा मुझे लगता है। – kangax

उत्तर

74

मैंने यह फ़ंक्शन लिखा था। :)

$$ उपसर्गों के लिए अब कोई विशेष महत्व नहीं है। यह एक संकेत था कि जब मैं पैकर लोकप्रिय था तब मैंने वापस उपयोग किया था। पैकर इस उपसर्ग के साथ चर नामों को छोटा करेगा। आजकल पैकर स्वचालित रूप से परिवर्तनीय नामों को छोटा कर देगा ताकि यह नोटेशन अनावश्यक हो।

संक्षिप्त उत्तर, $ साइन जावास्क्रिप्ट में एक मान्य पहचानकर्ता है, इसलिए आप केवल बदसूरत चर नामों का एक गुच्छा देख रहे हैं।;)

+8

आधिकारिक उत्तर के लिए धन्यवाद ... घोड़े के मुंह से इसे सुनकर अच्छा लगा, तो बात करने के लिए! – NewToThis

3

जहाँ तक मुझे पता है, डॉलर का संकेत केवल एक नियमित चरित्र है जिसका उपयोग परिवर्तनीय नामों में किया जा सकता है। यह ऐसी संपत्ति को इंगित करने के लिए एक सम्मेलन हो सकता है जिसके साथ गड़बड़ नहीं की जानी चाहिए।

मेरा अनुमान है कि लेखक ने $$guid का उपयोग मौजूदा संपत्ति नामों के साथ संघर्ष से बचने के लिए किया था। वह शायद __guid या इसके बजाय कुछ समान इस्तेमाल कर सकता था।

20

वास्तव में, यह डेवलपर का नामकरण सम्मेलन है। "$$" सभी उद्देश्यों और उद्देश्यों के लिए "aa" हो सकता है।

जैसा कि आपने बताया है, एकल डॉलर साइन फ़ंक्शन $() विभिन्न जावास्क्रिप्ट पुस्तकालयों में लगभग मानक बन गया है। "एक समारोह उन सभी पर शासन करने के लिए", आह? लेकिन याद रखें, यह जेएस के लिए कुछ भी निहित नहीं है। यह सिर्फ एक फ़ंक्शन नाम है जो document.getElementById() को प्रतिस्थापित करने के लिए पकड़ा गया है।

तो, इसके साथ, $$ कुछ भी हो सकता है। ,

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

दूसरे शब्दों में यह सिर्फ एक चर/समारोह सभी बाकी नाम-बस की तरह है: ओह, आप भी इस तरह एक समारोह हो सकता था।

+0

ग्रेट..ऐंक्स यह पुष्टि करने के लिए कि इससे अधिक नहीं था! – NewToThis

6

जैसा कि अन्य ने कहा है, $$ एक मनमाना पहचानकर्ता है।

जावास्क्रिप्ट टूलकिट MochiKit एक फ़ंक्शन को select elements using CSS selector syntax से सुरक्षित करता है, जो कि jQuery की तरह है, बिना किसी विशेष ऑब्जेक्ट में सभी मिलान तत्वों को लपेटने के अलावा।

तो, हाँ - यह विशेष रूप से विशेष रूप से विशेष नहीं है।

+6

मुझे यह जानना अच्छा लगेगा कि क्यों * & # # !! लोग इस पर मुझे मतदान कर रहे हैं; यदि आप नीचे मतदान करने जा रहे हैं, तो कम से कम उल्लेख करने के लिए पर्याप्त अच्छा हो। –

1

डबल डॉलर साइन निम्नलिखित शब्दों में संदर्भित है -

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

अच्छा पकड़ो। यही वह है जिसे मैं ढूंढ रहा हूं ... यह कहां परिभाषित किया गया है? क्या मोज़िला डेवलपर नेटवर्क के कैलिबर में कहीं कुछ संदर्भ है? – zipzit

संबंधित मुद्दे