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