2011-09-28 14 views
5

कुछ जे एस कोड कुछ साइटों पर मैं इस जैसे जावास्क्रिप्ट कोड को देखने पर:जावास्क्रिप्ट में यह कोड क्या है?

SomeName.init = (function() { 
    // some stuff 
})(); 

मेरा मतलब है, यह इस जैसे एक jQuery प्लगइन कोड नहीं है:

(function($){ 
    $.fn.myPlugin = function() { 

    // Do your awesome plugin stuff here 

    }; 
})(jQuery); 

फिर, यह क्या है ? और परिणामस्वरूप जेएस ऑब्जेक्ट क्या है?

+0

मैं ... सुनिश्चित नहीं हूं कि आप क्या पूछ रहे हैं। दोनों स्निपेट एक ऐसा फ़ंक्शन दिखाते हैं जो घोषित और निष्पादित दोनों होता है। इसके अलावा, वे संबंधित प्रतीत नहीं होते हैं। –

+0

पहला एक अज्ञात फ़ंक्शन के परिणाम "init" नामक चर में सेट कर रहा है। और जैसा कि दूसरे उदाहरण में देखा गया है, अनाम कार्य एक डिजाइन-पैटर्न है जिसे अक्सर पीएलयूजी-आईएन (या मॉड्यूल) बनाने में उपयोग किया जाता है और इस प्रकार इसे अक्सर 'मॉड्यूल पैटर्न' कहा जाता है। –

+0

[यहां मैंने जो पाया है] (http://stackoverflow.com/questions/5101638/what-does-this-javascript-code-mean) जब मैंने खोज बॉक्स में अपना शीर्षक टाइप किया था। – user113716

उत्तर

2

Module Pattern। और उन दो स्निपेट्स आपके विचार से अधिक आम हैं।

8

यह एक अज्ञात फ़ंक्शन है, जो var का उपयोग करके चर घोषित करते समय वैश्विक दायरे में चर को रिसाव नहीं करता है। क्योंकि गुमनाम समारोह घोषणा फ़ंक्शन निष्पादित () के बाद

SomeName.init = (function() { 
    return 3.1415; 
})(); 

SomeName.init, एक नंबर (3.1415) है। जब तक गुमनाम समारोह में परिभाषित वहाँ, मूल कार्य प्राप्त करने के लिए कोई रास्ता नहीं है:

(function foo(){ 
    //foo refers to this function 
    too = foo; 
})();; 
//foo is undefined 
//too refers to the function, because `too` has been defined without var 
0

जो भी फ़ंक्शन देता है।

(function() { 
    //... 
})(); 

नामस्थान कोड के लिए एक तरीका के रूप में उपयोग किया जाता है, या स्वयं निष्पादक कन्स्ट्रक्टर घोषित करता है। परिणामस्वरूप ऑब्जेक्ट वह भी है जो स्वयं-निष्पादन फ़ंक्शन देता है।

दूसरा स्निपेट कुछ भी वापस नहीं करता है और resulting JS object नहीं है।

1
(function() { 
    // some stuff 
})() 

एक अज्ञात फ़ंक्शन है जो तुरंत स्वयं को कॉल करता है। चरम दायरे को वैश्विक बनने से रोकने के लिए यह कोड के चारों ओर एक बंद है।

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