Header Ads

Header ADS

প্রোটোটাইপ

আমরা যখন কোন অবজেক্ট create  করি  সেগুলোর সাথে যে proparty এবং method ব্যাবহার করি সেখানে prototype নামে  একটা লুকানো proparty  থাকে যেটি মূলত একটি object. এটি  javascript engine অটোমেটিকালি create করে দেয়।


var Person = { firstName: 'Shohedul', lastName: 'Emon', } console.log(Person)
VM27398:6
  1. {firstName: "Shohedul", lastName: "Emon"}
    1. firstName"Shohedul"
    2. lastName"Emon"
prototype  কীভাবে সেট করে, কীভাবে ব্যবহার করে এবং কেন ব্যবহার করে 

ধরেন আপনি ফাংশন দিয়ে একটা অবজেক্ট তৈরি করবেন, ধরলাম object এর নাম  Person.
var Person = function(fastName,lastName){
this.fastName = fastName ;
 this.lastName=lastName;
};
এবং কয়েকটা অবজেক্ট  বানাইলেন যথাঃ
person1= new Person("Shohedul","Emon");
console.log(person1);
person2= new Person("Ibrahim","Ridoy");
console.log(person2);

Person {fastName: "Shohedul", lastName: "Emon"}f
Person {fastName: "Ibrahim", lastName: "Ridoy"}
কয়েকটা  বানানোর পর  মনে হল যে কয়েকটা অবজেক্টের ক্ষেত্রে   getAge() মেথড থাকা দরকার। এখন আপনি কী করবে? মূল ফাংশনে গিয়ে সেটা লিখবেন, এরপর অবজেক্টগুলোতে গিয়ে লিখবেন? এর চেয়ে যদি এমন হয়, prototype এর সাথে getAge method টা add করে দেয়া যাবে সেখান থেকে সবগুলা object (person1,prson2,etc..) এ  getAge method access পাবে।
এক্ষেত্রে,
 Person.prototype.getAge=function(age){return this.age=age}

এবার যদি আমরা আমাদের বানানো যেকোনো অবজেক্ট  console.log করি,
যেমনঃ console.log(person1);

  1. Person {fastName: "Shohedul", lastName: "Emon"}
    1. fastName"Shohedul"
    2. lastName"Emon"
    3. __proto__:
তাহলে দেখতে পাব আমাদের বানানো  person1 object এর prototype এর সাথে getAge method add হয়ে গেছে।
এবার যদি object.getAge();  call করি তাহলে age টা দেখতে পাব।

person1.getAge(18);
ans:10
person2.getAge(20)
Ans 20
সুতরাং এখন অনেকগুলো  object বানিয়ে  object.getAge() call  করলে  age টা দেখতে পাব।যখন আমরা অনেকগুলি  object বানাব   প্রতিটি object এর  সাথে অন্য কোন object এর  লিঙ্ক prototype এর মাধ্যমে হয়।প্রটোটাইপেরও আরেকটা প্রটোটাইপ থাকতে পারে, একে প্রটোটাইপ চেইন বলে,

প্রটোটাইপের সুবিধা কী? ধরি, আমাদের  এক হাজার অবজেক্ট আছে এবং মাত্র বিশটাতে getAge() মেথড দরকার, যদি আমি এক হাজারটাতে getAge() method লিখি তাহলে মেমরি কতটুকু খরচ হবে? এর চেয়ে যদি প্রটোটাইপে ব্যাবহার করি তাহলে দুই হাজার getAge() create হবে না, যখন ঐ বিশটাতে ব্যাবহার করব তখন শুধু সেই বিশটার জন্য create হবে।

(শহিদুল ইসলাম)

No comments

Theme images by 5ugarless. Powered by Blogger.