JavaScript Classes

کلاس در جاوا اسکریپت

کلاس جاوا اسکریپت در نسخه ECMAScript 2015 یا همان ES6 معرفی شد. کلاس‌های جاوا اسکریپت در حقیقت یک قالب (template) برای اشیاء جاوا اسکریپت هستند.

برای ایجاد یک کلاس، از کلید واژه class استفاده کنید.

همواره یک تابع شیء به اسم constructor() را اضافه کنید.

class ClassName {
constructor() { ... }
}
برای نمونه به کد زیر توجه کنید:
class Car {
constructor(name, year) {
this.name = name;
this.year = year;
}
}

در مثال بالا یک کلاس به اسم Car ایجاد کرده‌ایم. این کلاس دارای دو خصوصیت اولیه (initial properties) است: "اسم" و "سال".

استفاده از کلاس

زمانی که یک کلاس دارید، می‌توانید از آن برای ایجاد اشیاء استفاده کنید:

let myCar1 = new Car("Ford", 2014);
let myCar2 = new Car("Audi", 2019);

در کد فوق از کلاس Car برای ایجاد 2 شی‌ء از Car استفاده کرده‌ایم.

تابع شیء constructor به صورت خودکار در هنگام ایجاد یک شیء فراخوانده می‌شود.

تابع شیء constructor

این تابع شیئ یک تابع شیء ویژه است:

  • حتماً باید دارای اسم constructor باشد.
  • به صورت خودکار هنگام ایجاد یک شیء فراخوانده می‌شود.
  • جهت آماده سازی اولیه initialize خصوصیات شیء به کار می‌رود.

اگر تابع شیء constructor را تعریف نکنید، جاوا اسکریپت یک تابع شیء constructor خالی را اضافه می‌کند.

توابع شیء در کلاس

بعد از ایجاد کلاس با استفاده از کلید واژه class و اضافه کردن تابع شیء constructor می‌توانید هر تعداد تابع شیء که مورد نیازتان باشد اضافه کنید.

class ClassName {
constructor() { ... }
method_1() { ... }
method_2() { ... }
method_3() { ... }
}

برای مثال در کد زیر یک تابع شیء به اسم age ایجاد کرده‌ایم که سن ماشین (Car) را برمی‌گرداند.


<!DOCTYPE HTML>
<html>
  <body>
    <h2> JavaScript Class Method </h2>
    <p> How to define and use a Class method. </p>
    <p id = "demo"> </p>
    <script>
      class Car {
        constructor(name, year) {
          this.name = name;
          this.year = year;
        }
        age() {
          let date = new Date();
          return date.getFullYear() - this.year;
        }
      }
      let myCar = new Car("Ford", 2014);
      document.getElementById("demo").innerHTML =
      "My car is " + myCar.age() + " years old.";
    </script>
  </body>
</html>

خروجی:

توابع شیء کلاس می‌توانند شامل پارامتر هم باشند:


<!DOCTYPE HTML>
<html>
  <body>
    <h2> JavaScript Class Method </h2>
    <p> Pass a parameter into the "age()" method. </p>
    <p id = "demo"> </p>
    <script>
      class Car {
        constructor(name, year) {
          this.name = name;
          this.year = year;
        }
        age(x) {
          return x - this.year;
        }
      }
      let date = new Date();
      let year = date.getFullYear();
      let myCar = new Car("Ford", 2014);
      document.getElementById("demo").innerHTML =
      "My car is " + myCar.age(year) + " years old.";
    </script>
  </body>
</html>

خروجی:

در یک فصل جداگانه در مورد کلاس‌ها بیشتر خواهید آموخت.