2010-11-10 31 views
8

अपने वेब आवेदन के लिए, मैं तो जैसे JavaScript में एक नाम स्थान बनाने हूँ:नामस्थान के भीतर निजी चर कैसे बनाएं?

var com = {example: {}}; 
com.example.func1 = function(args) { ... } 
com.example.func2 = function(args) { ... } 
com.example.func3 = function(args) { ... } 

मैं भी "निजी" बनाना चाहते हैं (मैं जानता हूँ कि यह जे एस में मौजूद नहीं है) नाम स्थान चर लेकिन यकीन है कि क्या नहीं कर रहा हूँ उपयोग करने के लिए सबसे अच्छा डिजाइन पैटर्न।

यह होगा:

com.example._var1 = null; 

या डिजाइन पैटर्न कुछ और हो सकता है?

var com = { 
    example: (function() { 
     var that = {}; 

     // This variable will be captured in the closure and 
     // inaccessible from outside, but will be accessible 
     // from all closures defined in this one. 
     var privateVar1; 

     that.func1 = function(args) { ... }; 
     that.func2 = function(args) { ... } ; 

     return that; 
    })() 
}; 
+2

"महान" से आपका मतलब "बनाना" है? – kennytm

+0

[जावास्क्रिप्ट नेमस्पेस घोषणा] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/2504568/javascript-namespace-declaration) – casablanca

+0

@ कैसाब्लांका, नहीं - मेरा प्रश्न आपके द्वारा लिंक किए गए कार्यों का डुप्लिकेट नहीं है। – StaceyI

उत्तर

8

क्लोजर अक्सर निजी चर अनुकरण करने के लिए इस तरह उपयोग किया जाता है

myModule = function() { 

     //"private" variable: 
     var myPrivateVar = "I can be accessed only from within myModule." 

     return { 
       myPublicProperty: "I'm accessible as myModule.myPublicProperty" 
       } 
     }; 

}(); // the parens here cause the anonymous function to execute and return 

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

+2

इस उत्तर में जोड़ने के लिए: यह आलेख मॉड्यूल पैटर्न के कुछ अलग-अलग बदलावों का वर्णन करता है आपको विचार करना चाहिए। http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth –

7

डगलस Crockford तो Module Pattern कहा जाता है को लोकप्रिय बनाया है जहाँ आप "निजी" चर के साथ वस्तुओं को बनाने के कर सकते हैं::

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