ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषाएं निजी क्षेत्रों का उपयोग करके डेटा छिपाने की अनुमति देती हैं। वे इनका उपयोग कक्षाओं के आंतरिक भाग को छिपाने के लिए करते हैं। JS में आंतरिक कामकाज को छिपाने/एनकैप्सुलेट करने के लिए बिल्ड सपोर्ट में ऐसा कोई नहीं है।
हमारे पास बेनामी फ़ंक्शन हैं जो आपको JS में इनकैप्सुलेशन दे सकते हैं। आइए एक उदाहरण देखें -
उदाहरण
const HIDDEN_CONST = 100; function fnWeWantToHide(x, y) { return (x + y) * HIDDEN_CONST } console.log(fnWeWantToHide(1, 2))
यदि हम उपरोक्त कोड को खुले में लिखते हैं तो यह कोड इन नामों के साथ वैश्विक नामस्थान को प्रदूषित करेगा। इसके बजाय हम क्या कर सकते हैं इसे आईआईएफई (तुरंत लागू कार्यात्मक अभिव्यक्ति) में लपेटें। उदाहरण के लिए,
उदाहरण
(() => { const HIDDEN_CONST = 100; function fnWeWantToHide(x, y) { return (x + y) * HIDDEN_CONST } console.log(fnWeWantToHide(1, 2)) })()
अब, ये चर कार्यात्मक अभिव्यक्ति के भीतर छिपे हुए हैं। लेकिन thefunction और const अब वैश्विक नाम स्थान को प्रदूषित नहीं कर रहे हैं।