درود دوستان! امروز می‌خوایم با یک خاصیت پیشرفته از توابع جاوااسکریپت آشنا بشیم. توی این قسمت می‌خوایم Constructor Functions رو مفصل بررسی کنیم.

توی این قسمت یاد می‌گیریم که:

 

مشکل کجاست؟

فرض کنیم آبجکتی داریم به صورت زیر:

const mario = {
  name: 'Mario',
  age: 4,
  
  talk() {
    return `${this.name} is talking`;
  },

  sleep() {
    return `${this.name} is trying to sleep`;
  },
}

alert(mario.talk());
alert(mario.sleep());

همونطور که می‌بینیم توی آبجکت mario ما ۲ پراپرتی داریم و ۲ متد. حالا فرض کنیم می‌خوایم یک آبجکت مشابه همین آبجکت داشته باشیم. یعنی آبجکتی که دقیقاً همین پراپرتی‌ها و متدها رو داشته باشه ولی با مقدارهای پراپرتی متفاوت:

const emily = {
  <<name: 'Emily'>>,
  <<age: 6>>,
  
  talk() {
    return `${this.name} is talking`;
  },

  sleep() {
    return `${this.name} is trying to sleep`;
  },
}

alert(emily.talk());
alert(emily.sleep());

خب ما اینجا دقیقاً آبجکت mario رو کپی کردیم تا یک آبجکت مشابه داشته باشیم. اگه بخوایم هزار تا دیگه از این آبجکت‌ها داشته باشیم چطور؟ باید همینطوری از آبجکت کپی کنیم؟ این کار منطقی بود تا قبل از اینکه مفهومی به اسم کلاس‌ها معرفی بشن!

 

کلاس چیه؟

یک آجر چطوری ساخته میشه؟ از یک طرح و یک قالب از پیش ساخته شده. توی برنامه‌نویسی به این قالب‌های از پیش تعریف‌شده میگن کلاس.

کلاس، یک طرح و نقشه از پیش تعریف‌شده هست برای آبجکت‌هایی که می‌خوایم بسازیم.

وظیفه یک کلاس اینه که مشخص کنه آبجکت‌ها چه ویژگی‌ها و رفتارهایی داشته باشن. وقتی یک کلاس می‌سازیم، توی اون پراپرتی‌ها و متدهایی رو تعریف می‌کنیم و بدین صورت آبجکت‌هایی که از این کلاس‌ها ساخته میشن، شامل این پراپرتی‌ها و متدها هستن.

توی اکثر زبان‌های شی‌گرایی برای داشتن کلاس ما از روش زیر استفاده می‌کنیم: