javascriptClass basicsمبانی کلاس در جاوااسکریپت
کلاس در جاوااسکریپت را با یک کار قابل تکمیل بشناسید؛ constructor، ساخت نمونه با new و تفاوت دادهٔ نمونه با متد را بدون پیچیدگی اضافی یاد بگیرید.
مفهوم به زبان ساده
کلاس شکلی برای تعریف الگوی ساخت شیء و رفتارهای مرتبط با آن است. وقتی چند نمونهٔ مشابه داریم، میتوان دادهٔ آغازین را در constructor و عملیات مرتبط را در متدها نوشت. کلاس در جاوااسکریپت بر سازوکارهای همین زبان بنا شده است؛ برای استفادهٔ اولیه لازم نیست ابتدا همهٔ جزئیات وراثت و prototype را یاد بگیرید.
در مثال، هر Task عنوان و وضعیت done دارد. constructor هنگام new Task اجرا میشود و مقادیر اولیه را روی نمونه میگذارد. متد complete وضعیت همان نمونه را تغییر میدهد. تعریف کلاس یا تعریف متد به معنی اجرای خودکار complete نیست؛ باید آن را روی نمونه فراخوانی کنیم. خواندن typeof متد هم نشان میدهد همچنان با یک تابع روبهرو هستیم.
برای ساخت نمونهٔ کلاس از new استفاده کنید؛ فراخوانی Task(...) بدون آن خطا میدهد. نمونه را نیز پس از رسیدن اجرا به تعریف کلاس بسازید. کلاس را صرفاً برای شباهت ظاهری، به همهٔ دادهها تحمیل نکنید. اگر داده و چند تابع مستقل مسئله را روشنتر حل میکنند، آن ساختار هم معتبر است. برای تمرین، دو کار بسازید و فقط یکی را تکمیل کنید تا استقلال دادهٔ نمونهها را ببینید.
کجا به کار میآید؟
- شناخت ساختار کدهای سادهٔ شیءگرا در پروژهها
- گروهبندی دادهٔ هر نمونه با عملیات مرتبط به آن
از تعریف تا یک مثال واقعی
class Task {
constructor(title) {
this.title = title;
this.done = false;
}
complete() {
this.done = true;
}
}
const task = new Task('تمرین');
task.complete();
console.log(task.title);
console.log(task.done);
console.log(typeof task.complete);
تمرین true function
این مثال چطور کار میکند؟
new Task سازنده را اجرا و یک نمونهٔ تازه ایجاد میکند.
complete وضعیت done همان نمونه را true میکند.
عنوان، وضعیت و نوع متد چاپ میشوند؛ متد یک تابع است.
اشتباه رایج
کلاس را مانند تابع معمولی بدون new فراخوانی نکنید. همچنین تعریف complete آن را اجرا نمیکند؛ task.complete() فراخوانی واقعی است.
این را به خاطر بسپارید
constructor مقداردهی آغازین را انجام میدهد؛ متدها رفتار قابل فراخوانی نمونه را توصیف میکنند.