সার্কুলার রেফারেন্স ঘটে যখন দুটি পৃথক অবজেক্ট একে অপরের রেফারেন্স পাস করে।
পুরনো ব্রাউজারগুলিতে সার্কুলার রেফারেন্স মেমরি লিকের কারণ হতো। গার্বেজ কালেকশন অ্যালগরিদমে উন্নতির সাথে, যেগুলো এখন সাইকেল এবং সাইклиক ডিপেন্ডেন্সি ভালোভাবে হ্যান্ডেল করতে পারে, এটি আর সমস্যা নয়।
তবে, শুধু ডিজাইন পয়েন্ট অফ ভিউ থেকে, সার্কুলার রেফারেন্সিং এখনও একটি বadto জিনিস এবং কোড স্মেল। সার্কুলার রেফারেন্সিং ইঙ্গিত দেয় যে একে অপরের রেফারেন্স রাখা দুটি অবজেক্ট টাইটলি কাপলড এবং একটিতে পরিবর্তন আনলে অন্যটিও পরিবর্তন করতে হতে পারে।
ধরুন আপনার দুটি অবজেক্ট আছে, Dog এবং Person। আপনি চান ডগ অবজেক্ট দিয়ে মালিককে এবং পার্সন অবজেক্ট দিয়ে পেটকে এক্সেস করতে।
let dog = new Dog(); let person = new Person(); // সার্কুলার রেফারেন্স তৈরি dog.owner = person person.pet = dog
বেশিরভাগ সিনেরিওতে আপনাকে শুধু একটি অবজেক্ট এক্সেস করতে হবে এবং সেটা থেকে অন্যটি ডেরাইভ করতে হবে। তাই আপনি লিংকগুলোর একটিকে ভাঙতে পারেন। না হলে আপনি রিভার্স সিনেরিওতে অবজেক্ট ম্যাপ করতে একটি ম্যাপ ব্যবহার করতে পারেন। কিন্তু হ্যাক ব্যবহার করার চেয়ে সার্কুলার রেফারেন্স থাকতে দেয়া ভালো।