زبان جاوا اسکریپت به عنوان یکی از محبوبترین و کاربردیترین زبانهای برنامهنویسی در سالهای گذشته پیشرفتهای زیادی را تجربه کرده و ویژگیهای جدیدی به آن اضافه شده است؛ اضافه شدن این ویژگیها منجر به این شده که توسعهدهندگان قدرت بیشتری در اختیار داشته باشند. یکی از ویژگیهای جدید در جاوا اسکریپت، کلاس (Class) نام دارد که توانسته نحوه ساختار و ایجاد اشیاء در این زبان را تغییر دهد. ویژگی کلاس در جاوا اسکریپت کاربردها و رویکردهای مختلفی دارد که در این مقاله بلاگ کندو با آنها آشنا شده و با بررسی مثالهای مختلف با سینتکس آن آشنا میشویم.

کلاس در جاوا اسکریپت چه استفادهای دارد؟
در خصوص Class در جاوا اسکریپت باید به این موضوع اشاره کرد که در نسخه اکما اسکریپت 6 (ES6) که در سال 2015 توسعه داده شده، شاهد افزوده شدن کلاسها به این زبان برنامهنویسی بودیم. جاوا اسکریپت از ارثبری وابسته به نمونه اولیه (Prototypal Inheritance) استفاده میکند به این معنی که یک شیء در این زبان، خصوصیات و متدهایی را از نمونه اولیه شیء به ارث خواهد برد. در خصوص کلاس باید گفت که مفهوم سنتی آن به معنی نقشه ساختی برای شیءها بوده که در زبان جاوا و سوئیفت مورد استفاده قرار میگیرد اما در جاوا اسکریپت کاربردی ندارد.
کلاس در جاوا اسکریپت چیست؟
برای درک و ارائه تعریف دقیق از کلاس در جاوااسکریپت باید گفت که نقشهای برای ایجاد شیء (Object) به حساب میآید و شیء نیز نمونهای از کلاس محسوب میشود. در واقع در زبان جاوا اسکریپت با استفاده از کلاسها میتوان نسبت به تعریف اشیائی اقدام کرد که از قابلیت تغییر و توسعه برخوردار هستند. اجزای تشکیل دهنده کلاس در جاوا اسکریپت شامل خصیصه (Property)، متدها (Method) و سازندهها (Constructor) میشود.
خصیصه یا خصوصیتها به صفات یک کلاس گفته میشود که در کلاس یا شیء ذخیره خواهد شد. متدها مانند توابع برنامهنویسی بوده و میتوانند یک رویه تعریف شده را روی یک شیء اعمال کنند. در جاوا اسکریپت سنتی به منظور تعریف کلاس از دستور New Function استفاده میشد در حالی که امروزه در جاوا اسکریپت مدرن، میتوان کلاسها را از طریق کلمه کلیدی Class تعریف کرد که باز هم یک نوع تابع به حساب میآیند. قاعده نحوی تعریف یا سینتکس کلاس در جاوا اسکریپت به شرح زیر است.
class User {
// بدنه کلاس
}
در کد فوق یک کلاس با نام User تعریف شده و علامت {} (آکولاد) مشخص کننده بدنه کلاس است. در نوشتن کد میتوان نام برای کلاس تعیین نکرد و آن را به صورت مستقیم به یک متغیر اختصاص داد.

مزایای Class در جاوا اسکریپت چیست؟
یکی از مهمترین مزیتهای کلاس در جاوا اسکریپت این است که میتواند به ساختاربندی کد به روش سازمانیافتهتر و مختصرتر کمک کند. از دیگر مزایای کلاس در زبان برنامهنویسی جاوا اسکریپت میتوان به موارد زیر اشاره کرد:
- امکان کپسولهسازی و وراثت بهتر دادهها
- خواناتر و قابل نگهداریتر کردن کدها
- قابلیت استفاده به صورت گسترده در ایجاد برنامههای کاربردی پیچیده
- قابلیت استفاده در پایگاههای کد بزرگ دارای الزام رعایت اصول برنامهنویسی شیءگرا
مقداردهی اولیه نمونه کلاس در جاوا اسکریپت با Constructor
یکی از مفاهیم شیءگرایی در جاوا اسکریپت متد سازنده یا Constructor نام دارد که منظور ایجاد یک شیء، این متد برای کلاس ایجاد میشود. متد سازنده یکی از متدهای خاص در این زبان برنامهنویسی به حساب میآید که به شکل Constructor (Param1, Param2, …) در بدنه کلاس قرار داده میشود و میتواند مقداردهی اولیه یک نمونه را انجام دهد. از این متد میتوان برای مقداردهی اولیه فیلدها یا هر نوع تنظیمات بر روی شیء استفاده کرد. در مثال زیر میتوان مشاهده کرد که متد سازنده به منظور تعیین مقدار اولیه فیلد Name مورد استفاده قرار گرفته است.
class User}
constructor(name) {
this.name = name;
{
{
انواع فیلدهای کلاس در جاوا اسکریپت کدام است؟
در خصوص فیلد کلاس در جاوا اسکریپت باید گفت که متغیرهایی هستند که توانایی نگهداری اطلاعات را دارند. به طور کلی این فیلدها را میتوان در دو دسته اصلی تقسیمبندی کرد:
- فیلدهای نمونه کلاس
- فیلدهای خود کلاس (فیلد استاتیک)

برای این فلیدها میتوان به طور کلی 2 سطح دسترسی را تعیین کرده و در نظر گرفت:
- سطح دسترسی عمومی (Public): از این نوع سطح دسترسی در زمانهایی استفاده میشود که نیاز به دسترسی به یک فیلد خارج از کلاس نیز وجود داشته باشد. در صورتی که این سطح دسترسی برای فیلد در نظر گرفته شود در هر جایی میتوان به آن دسترسی پیدا کرد.
- سطح دسترسی خصوصی (Private): در صورتی که این سطح را برای دسترسی به فیلد در نظر بگیرید، محدودیت بیشتری وجود داشته و تنها در بدنه کلاس میتوان به فیلد دسترسی داشت.
متدهای کلاس در جاوا اسکریپت کدام است؟
همانطور که اشاره شد فیلدها در زبان برنامهنویسی جاوا اسکریپت وظیفه نگهداری دادهها را بر عهده دارند اما برای تغییر در دادهها باید از توابع خاصی استفاده کرد که بخشی از کلاسها بوده و به نام متد شناخته میشوند. کلاس در جاوا اسکریپت میتواند از هر دو نوع متد، یعنی متدهای نمونه و متدهای استاتیک پشتیبانی کند.
متدهای نمونه چگونه کار میکنند؟
متدهای نمونه (Instance Methods) از قابلیت دسترسی به دادههای نمونه برخوردار بوده و میتوانند در آنها تغییر ایجاد کنند. یکی از ویژگیهای مهم متدهای نمونه، امکان فراخوانی سایر متدهای نمونه و متدها استاتیک است. به عنوان مثال در قطعه کد زیر یک متد Get Name تعریف شده که نام کلاس User را برمیگرداند:
class User}
name = 'Unknown';
constructor(name)}
this.name = name;
{
getName() }
return this.name;
{
{
const user = new User ('Jon Snow');
user.getName(); // => 'Jon Snow'
متدهای استاتیک کلاس در جاوا اسکریپت چگونه کار میکنند؟
متدهای استاتیک یا متدهای ایستا (Static Methods) به توابعی گفته میشود که میتوان آنها را به صورت مستقیم به کلاس اضافه کرد. در واقع این توابع میتوانند به جای منطق نمونهای از کلاس، منطق مربوط به کلاس را نگهداری کنند. به منظور ایجاد متد استاتیک در کلاس، باید از کلمه کلیدی Static و در ادامه آن از ساختار دستوری متد معمولی استفاده کرد. به عنوان مثال static myStaticMethod() { … } یک نمونه از ایجاد متد استاتیک در کلاس به حساب میآید.

به طور کلی برای متدهای استاتیک دو قاعده کلی وجود دارد که به شرح زیر است:
- امکان دسترسی به فیلدهای استاتیک برای متد استاتیک وجود دارد.
- امکان دسترسی به فیلدهای نمونه برای متد استاتیک وجود ندارد.
در ادامه مثالی را مشاهد میکنید که در آن متد استاتیک به منظور تشخیص اینکه آیا کاربری با یک نام خاص قبلا ثبت نام انجام داده یا خیر ایجاد شده است:
class User {
static #takenNames = [];
static isNameTaken(name) {
return User.#takenNames.includes(name);
}
name = 'Unknown';
constructor(name) {
this.name = name;
User.#takenNames.push(name);
}
}
const user = new User('Jon Snow');
User.isNameTaken('Jon Snow'); // => true
User.isNameTaken('Arya Stark'); // => false
انواع Property اشیا در جاوا اسکریپت کدام است؟
به طور کلی در زبان برنامهنویسی جاوا اسکریپت دو نوع خصوصیت برای اشیاء تعریف میشود که به شرح زیر است:
- خصوصیتهای دادهای (Data Properties): این نوع خصوصیتها شامل یک موقعیت مکانی برای یک مقدار دادهای هستند.
- خصوصیت گیرنده (Getter) و تنظیم کننده (Setter): این دو خصوصیت شبیه به یک فیلد معمولی هستند با این تفاوت که میتوانند کنترل بیشتری روی نحوه دسترسیی و تغییرات فیلد داشته باشند. برای بدست آوردن مقدار فیلد Getter و برای تنظیم یک مقدار Setter مورد استفاده قرار میگیرد.

اگر این مطلب برای شما مفید و آموزنده بود، مطلب نحوه کار با حلقه for در جاوا اسکریپت را هم در بلاگ کندو بخوانید.
سخن آخر
زبانهای برنامهنویسی روز به روز در حال توسعه و تغییر بوده و امکانات و قابلیتهای جدید به آنها متناسب با نیاز توسعهدهندگان و برنامهنویسان اضافه میشود. جاوا اسکریپت یکی از زبانهای محبوب و کاربردی است که در سالهای اخیر شاهد توسعه و اضافه شدن قابلیتهای متعددی بوده است. کلاس در جاوا اسکریپت آموزشگاه کندو یکی از قابلیتهایی است که در سالهای اخیر به این زبان اضافه شده و امکان تعریف اشیاء دارای قابلیت تغییر و توسعه را فراهم کرده است. کلاس دارای کاربردها و قابلیتهای متعددی بوده و به یکی از قابلیتهای کلیدی زبان برنامهنویسی جاوا اسکریپت برای توسعهدهندگان و برنامهنویسان تبدیل شده است.
سوالات متداول
کلاس در جاوا اسکریپت چیست؟
یکی از قابلیتهای زبان جاوا اسکریپت به حساب میآید که با استفاه از آن میتوان نسبت به تعریف اشیائی اقدام کرد که از قابلیت تغییر و توسعه برخوردار هستند.
اجزای کلاس در جاوا اسکریپت کدام است؟
اجزای تشکیل دهنده کلاس در جاوا اسکریپت شامل خصیصه (Property)، متدها (Method) و سازندهها (Constructor) میشود.
از چه زمانی قابلیت کلاس به زبان جاوا اسکریپت افزوده شد؟
از زمان عرضه نسخه اکما اسکریپت 6 (ES6) که در سال 2015 توسعه داده شده، شاهد افزوده شدن کلاسها به این زبان برنامهنویسی بودیم.