درود دوستان. کلاس‌ها (Classes) از ES6 به جاوااسکریپت اومدن تا جایگزینی برای توابع Constructor باشن که یک روش سنتی برای ساختن آبجکت‌ها از یک طرح و الگوی اولیه به حساب میومد. این ویژگی کاربرد زیادی توی فریم‌ورک‌ها و کتابخونه‌هایی مثل ری‌اکت و انگولار داره.

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

 

مشکل کجاست؟

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

const emily = {
  name: "Emily",
  age: 4,
  run() {
    alert(`${this.name} is running`);
  }
}

همونطور که می‌بینیم ۲ پراپرتی داریم و یک متد. حالا می‌خوایم چند آبجکت دیگه مشابه همین آبجکت داشته باشیم که فقط توی مقدار پراپرتی‌ها با هم تفاوت دارن. شاید راهی که به ذهنمون برسه این باشه که هر آبجکتی رو دقیقاً مثل همون آبجکت بالا و به صورت دستی بسازیم:

const mario = {
  name: "Mario",
  age: 5,
  run() {
    alert(`${this.name} is running`);
  }
}

const john = {
  name: "John",
  age: 3,
  run() {
    alert(`${this.name} is running`);
  }
}

// ...

این کار چند مشکل داره:

۱. داریم کدهای تکراری می‌نویسیم. متد run بدون تغییر توی همه آبجکت‌ها تکرار شده. کار زمانی سخت‌تر میشه که تعداد پراپرتی‌ها و متدهای ما زیاد باشن.

۲. برای اضافه کردن یک پراپرتی به آبجکت، باید سراغ همه آبجکت‌ها بریم و به صورت دستی پراپرتی‌ها رو اضافه کنیم.

کلاس‌ها برای حل چنین مشکل‌هایی به کارمون میان 👌

 

کلاس چیه؟

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