জাভাস্ক্রিপ্ট অ্যাক্সেসরস (Getters এবং Setters)

জাভাস্ক্রিপ্ট অ্যাক্সেসরস (Getters এবং Setters)

জাভাস্ক্রিপ্টে অবজেক্টের ডাটা নিয়ন্ত্রণ করতে Getters ও Setters ব্যবহার করা হয়। এদের একত্রে বলা হয় Accessors। এগুলোর মাধ্যমে অবজেক্টের প্রপার্টি রিড ও আপডেট করার সময় অতিরিক্ত লজিক প্রয়োগ করা যায়।

➤ Getter এবং Setter কী?

  • Getter: কোনো প্রপার্টির মান পড়ার সময় কল হয়।
  • Setter: কোনো প্রপার্টির মান সেট করার সময় কল হয়।

➤ উদাহরণ ১: Basic Getter এবং Setter


let ছাত্র = {
  প্রথম_নাম: "সাবির",
  শেষ_নাম: "হোসেন",

  get পুরো_নাম() {
    return this.প্রথম_নাম + " " + this.শেষ_নাম;
  },

  set পুরো_নাম(value) {
    let অংশ = value.split(" ");
    this.প্রথম_নাম = অংশ[0];
    this.শেষ_নাম = অংশ[1];
  }
};

console.log(ছাত্র.পুরো_নাম); // সাবির হোসেন

ছাত্র.পুরো_নাম = "রাহিম উদ্দিন";
console.log(ছাত্র.প্রথম_নাম); // রাহিম
console.log(ছাত্র.শেষ_নাম);   // উদ্দিন

ব্যাখ্যা: এখানে পুরো_নাম প্রপার্টি শুধুমাত্র একটি ফাংশন নয় — এটি একটি অ্যাক্সেসর প্রপার্টি। যখন আমরা এটি পড়ি, তখন get ফাংশন কল হয়, আর যখন সেট করি, তখন set ফাংশন কল হয়।

➤ উদাহরণ ২: Validation সহ Setter


let পণ্য = {
  _মূল্য: 0,

  get মূল্য() {
    return this._মূল্য;
  },

  set মূল্য(মান) {
    if (মান < 0) {
      console.log("দুঃখিত, ঋণাত্মক মূল্য গ্রহণযোগ্য নয়।");
    } else {
      this._মূল্য = মান;
    }
  }
};

পণ্য.মূল্য = -৫০;   // সতর্ক বার্তা দেখাবে
console.log(পণ্য.মূল্য); // 0

পণ্য.মূল্য = ২০০;
console.log(পণ্য.মূল্য); // ২০০

ব্যাখ্যা: এখানে আমরা setter ব্যবহার করে ভ্যালিডেশন চেক করেছি যেন ঋণাত্মক মূল্য সেট করা না যায়। _মূল্য একটি প্রাইভেট ভ্যারিয়েবল (নেইমিং convension)।

➤ Getter ও Setter এর সুবিধাসমূহ

  • অবজেক্ট প্রপার্টির ওপর নিয়ন্ত্রণ রাখা যায়।
  • ডাটা পড়া বা লেখা সময়ে ভ্যালিডেশন বা ফরম্যাটিং করা যায়।
  • কোড রিডেবল ও গঠিত থাকে।
  • ভবিষ্যতে পরিবর্তন করা সহজ হয় কারণ অভ্যন্তরীণ কাঠামো পরিবর্তন করলেও বাইরের কোড অপরিবর্তিত থাকে।

➤ Object.defineProperty() দিয়ে Getter/Setter


let ব্যবহারকারী = {
  প্রথম_নাম: "তামিম",
  শেষ_নাম: "ইকবাল"
};

Object.defineProperty(ব্যবহারকারী, "পুরো_নাম", {
  get: function() {
    return this.প্রথম_নাম + " " + this.শেষ_নাম;
  },
  set: function(value) {
    let অংশ = value.split(" ");
    this.প্রথম_নাম = অংশ[0];
    this.শেষ_নাম = অংশ[1];
  }
});

console.log(ব্যবহারকারী.পুরো_নাম); // তামিম ইকবাল

ব্যাখ্যা: Object.defineProperty() ব্যবহার করেও অ্যাক্সেসর তৈরি করা যায়। এটি পুরানো এবং বিশেষ পরিস্থিতিতে ব্যবহৃত হয়।

➤ উপসংহার

জাভাস্ক্রিপ্ট অ্যাক্সেসরস (get/set) ব্যবহার করে অবজেক্ট প্রপার্টির রিডিং ও রাইটিং-এ পূর্ণ নিয়ন্ত্রণ রাখা যায়। এটি শুধু ভ্যালু এক্সেস বা আপডেট করার জন্য নয়, বরং নিরাপদ এবং স্মার্ট উপায়ে ডাটা হ্যান্ডল করার জন্য ব্যবহৃত হয়।


Leave a Reply