सर्कुलर रेफरेंस तब होता है जब दो अलग-अलग ऑब्जेक्ट्स एक-दूसरे को रेफरेंस पास करते हैं।
पुराने ब्राउज़र्स में सर्कुलर रेफरेंस मेमोरी लीक का कारण थे। गार्बेज कलेक्शन एल्गोरिदम में सुधार के साथ, जो अब साइकिल और साइक्लिक डिपेंडेंसी को ठीक से संभाल सकते हैं, यह अब कोई समस्या नहीं है।
हालांकि, शुद्ध डिज़ाइन के दृष्टिकोण से, सर्कुलर रेफरेंसिंग अभी भी एक बुरी चीज और कोड स्मेल है। सर्कुलर रेफरेंसिंग का तात्पर्य है कि एक-दूसरे को रेफरेंस करने वाले 2 ऑब्जेक्ट्स टाइटली कपल्ड हैं और एक ऑब्जेक्ट में परिवर्तन के लिए दूसरे में भी परिवर्तन की आवश्यकता हो सकती है।
मान लीजिए आपके पास 2 ऑब्जेक्ट्स हैं, Dog और Person। आप डॉग ऑब्जेक्ट का उपयोग करके डॉग के मालिक को रेफरेंस करने और पर्सन ऑब्जेक्ट का उपयोग करके व्यक्ति के पालतू जानवर को रेफरेंस करने में सक्षम होना चाहते हैं।
let dog = new Dog(); let person = new Person(); // सर्कुलर रेफरेंस बनाना dog.owner = person person.pet = dog
अधिकांश परिदृश्यों में आपको केवल एक ऑब्जेक्ट तक पहुंचने और उससे दूसरे को प्राप्त करने की आवश्यकता होगी। इसलिए आप लिंक्स में से एक को तोड़ सकते हैं। यदि नहीं तो आप रिवर्स परिदृश्य में ऑब्जेक्ट्स को मैप करने के लिए एक मैप का उपयोग कर सकते हैं। लेकिन हैक्स का उपयोग करने के बजाय, सर्कुलर रेफरेंस को वहीं रहने देना बेहतर है।