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