7.5 Constructor Pattern ব্যবহার করে জাভাস্ক্রিপ্টের ক্লাস তৈরি:

 

আমরা constructor ফাংশন ব্যবহার করে জাভাস্ক্রিপ্টের constructor pattern সম্পর্কে জেনেছি। Constructor Function এমন একটি ফাংশন যা Object তৈরি করতে পারে। Constructor function ব্যবহার করে Object তৈরি করার প্রক্রিয়াই আসলে constructor pattern। নিচের কোডটি খেয়াল করিঃ

function CreateCircle(radius){
    this.radius = radius;
    this.draw = function () {
      console.log(`Circle radius is ${this.radius}`);
    };
}

const circle1 = new CreateCircle(5);

 

আমরা এখানে ফাংশন দিয়ে constructor pattern ইমপ্লিমেন্ট করেছি। CreateCircle Constructor Function ব্যবহার করে circle Object তৈরি করেছি। উপরের কোডে আমারা একটা নতুন Keyword ব্যবহার করেছি তা হল new নিশ্চয়ই লক্ষ্য করেছেন।আমরা যখন এই new Keyword টা ব্যবহার করি তখন আসলে তিনটি জিনিস ঘটে। প্রথমত, এই new Keyword একটি খালি বা empty জাভাস্ক্রিপ্ট Object তৈরি করে। অনেকটা const x = {} এইরকম, যা আসলে Background এ কাজ করে বলে আমরা দেখতে পাই না। দ্বিতীয়ত, এইটি this টিকে সেট করবে খালি বা empty Object টিকে পয়েন্ট করার জন্য যার মধ্যমে আমরা খালি বা empty Object টিতে property বা মেথড যোগ করব। আর অবশেষে, Object টিকে ফাংশন থেকে return করবে। এই প্রক্রিয়াটিও আসলে Background এ কাজ করে বলে আমরা দেখতে পাই না।

সুতরাং আমরা এখন CreateCircle Constructor Function কে বিভিন্ন মান বা বিভিন্ন আর্গুমেন্ট দিয়ে কল করে বিভিন্ন circle অবজেক্ট পেতে পারি। চলুন আমরা আরও কিছু circle অবজেক্ট তৈরি করি আমাদের লিখা Constructor Function দিয়ে।

 

function CreateCircle(radius) {
    this.radius = radius;
    this.draw = function () {
      console.log(`Circle radius is ${this.radius}`);
    };
}

const circle1 = new CreateCircle(5);
console.log(circle1.draw());
const circle2 = new CreateCircle(10);
console.log(circle2.draw());


// output:
// Circle radius is 5
// Circle radius is 10

 

আমরা Constructor Function সম্পর্কে জানলাম। এখন আমরা ক্লাস ব্যবহার করে একই জিনিস করব।

ক্লাসের সুবিধা হল, প্রত্যেকটা ক্লাসের অটোম্যাটিকালি constructor ফাংশন থাকে। যা ক্লাসের ইন্সট্যান্স বা অবজেক্ট তৈরি করে তা রিটার্ন করে। আমরা উপরে যেমন new keyword ব্যবহার করেছি, ক্লাসের ক্ষেত্রেও নতুন অবজেক্ট তৈরির ক্ষেত্রে new keyword ব্যবহার করব। যখনি new keyword দিয়ে ক্লাসের অবজেক্ট ডিক্ল্যেয়ার করি, তখনি constructor ফাংশন কল হয়ে যায়। যখনি constructor কল হয় তখন একটি নতুন অবজেক্ট তৈরি হয় এবং this এর ভ্যালু নতুন অবজেক্টটিতে সেট হয়। তারপর নতুন তৈরি করা অবজেক্ট অটোমেটিক্যালি রিটার্ন হয়।

নিচের কোডটি খেয়াল করি। আমরা CreateCircle নামে একটা ক্লাস তৈরি করেছি, যার constructor ফাংশনে radius এর ভ্যালু সেট করেছি। যখনি new keyword ব্যবহার করে আমরা নতুন circle1 অবজেক্ট তৈরি করেছি, তখনি constructor ফাংশন কল হয়েছে এবং আর্গুমেন্টের radius এর ভ্যালু নতুন তৈরি করা অবজেক্টে সেট হয়েছে। এরপর অবজেক্টটি রিটার্ন হয়েছে। এভাবে চাইলে আমরা হাজারটাও circle তৈরি করতে পারব।

class CreateCircle {
   constructor(radius){
      this.radius = radius;
   }
   draw(){
      console.log(`Circle radius is ${this.radius}`)
   }
}

const circle1 = new CreateCircle(5);
circle1.draw()                    // আউটপুটঃ Circle radius is 5