জাভাস্ক্রিপ্ট অবজেক্ট প্রোটোটাইপ কিভাবে কাজ করে?

জাভাস্ক্রিপ্ট অবজেক্ট প্রোটোটাইপ (JavaScript Object Prototypes)

জাভাস্ক্রিপ্টে প্রত্যেকটি অবজেক্টের একটি প্রোটোটাইপ থাকে। প্রোটোটাইপ হলো এমন একটি অবজেক্ট যেখান থেকে আরেকটি অবজেক্ট প্রপার্টি ও মেথড ইনহেরিট করতে পারে। এটি জাভাস্ক্রিপ্টের prototype chain এর মূল ভিত্তি।

➤ প্রোটোটাইপ কিভাবে কাজ করে?

যখন আপনি কোন অবজেক্ট থেকে একটি প্রপার্টি বা মেথড অ্যাক্সেস করেন, জাভাস্ক্রিপ্ট প্রথমে ঐ অবজেক্টেই তা খুঁজে। যদি না পায়, তাহলে এটি তার প্রোটোটাইপে খোঁজে, এরপর তার প্রোটোটাইপের প্রোটোটাইপে — এভাবে চলতে থাকে যতক্ষণ না null পাওয়া যায়। এটিকেই বলে prototype chain।

➤ উদাহরণ ১: প্রোটোটাইপ ব্যবহার করে মেথড শেয়ার করা


// কনস্ট্রাক্টর ফাংশন
function Student(name, age) {
  this.name = name;
  this.age = age;
}

// প্রোটোটাইপে একটি মেথড যোগ করা হচ্ছে
Student.prototype.introduce = function() {
  return "আমার নাম " + this.name + " এবং আমি " + this.age + " বছর বয়সী।";
};

// একটি অবজেক্ট তৈরি করা হচ্ছে
let student1 = new Student("রাকিব", ২১);

// মেথড কল করা হচ্ছে
console.log(student1.introduce());

বাংলা ব্যাখ্যা: উপরের উদাহরণে Student নামে একটি কনস্ট্রাক্টর ফাংশন আছে যা name ও age গ্রহণ করে। এরপর Student.prototype এ introduce() মেথড যোগ করা হয়েছে যাতে সবাই এটি ব্যবহার করতে পারে। অবজেক্ট student1 এটি ব্যবহার করে তার পরিচয় দিতে পারে।

➤ উদাহরণ ২: ইনহেরিট্যান্স (Inheritance) প্রোটোটাইপ দিয়ে


// প্যারেন্ট অবজেক্ট
let animal = {
  sound: function() {
    return "প্রাণী শব্দ করে।";
  }
};

// চাইল্ড অবজেক্ট
let dog = Object.create(animal);
dog.bark = function() {
  return "কুকুর ঘেউ ঘেউ করে।";
};

// চেইন ধরে অ্যাক্সেস
console.log(dog.bark());     // কুকুর ঘেউ ঘেউ করে।
console.log(dog.sound());    // প্রাণী শব্দ করে।

বাংলা ব্যাখ্যা: এখানে animal নামের একটি অবজেক্ট তৈরি করা হয়েছে যাতে একটি sound() মেথড আছে। এরপর Object.create(animal) ব্যবহার করে dog নামে একটি নতুন অবজেক্ট তৈরি করা হয়েছে, যার প্রোটোটাইপ animal। তাই dog.sound() কল করলে এটি তার প্রোটোটাইপে গিয়ে ফাংশন খুঁজে পায়।

➤ নিজের প্রোটোটাইপ দেখুন


let person = { name: "রহিম" };

console.log(Object.getPrototypeOf(person)); // এটা person এর প্রোটোটাইপ দেখায়

বাংলা ব্যাখ্যা: Object.getPrototypeOf() ব্যবহার করে আপনি যে কোন অবজেক্টের প্রোটোটাইপ দেখতে পারেন। এটি জাভাস্ক্রিপ্টে ডিবাগিং বা ইনহেরিটেন্স বোঝার জন্য খুব উপকারী।

➤ ক্লাস ব্যবহার করেও প্রোটোটাইপ


class Vehicle {
  constructor(name) {
    this.name = name;
  }

  move() {
    return this.name + " চলছে...";
  }
}

let car = new Vehicle("টয়োটা");
console.log(car.move());

বাংলা ব্যাখ্যা: class ব্যবহার করলে জাভাস্ক্রিপ্ট ভিতরে ভিতরে প্রোটোটাইপ প্যাটার্ন ব্যবহার করে। এখানে Vehicle ক্লাসে move() মেথডটি প্রোটোটাইপে থাকে এবং car অবজেক্ট এটি অ্যাক্সেস করতে পারে।

➤ উপসংহার

  • জাভাস্ক্রিপ্টে প্রত্যেকটি অবজেক্টের একটি প্রোটোটাইপ থাকে।
  • প্রোটোটাইপ চেইন ব্যবহার করে অবজেক্টগুলো অন্য অবজেক্টের প্রপার্টি ও মেথড ব্যবহার করতে পারে।
  • পুনঃব্যবহারযোগ্য কোড লেখার জন্য প্রোটোটাইপ খুবই কার্যকর।

Leave a Reply