vahiiiid
vahiiiid
خواندن ۳ دقیقه·۵ سال پیش

از static method در کلاس های js استفاده می کنید؟

javascript static method
javascript static method

توی این پست یه توضیح سریع از static method در جاوا اسکریپت و موارد کاربرد اون رو با هم می بینیم.

روش تعریف و استفاده از static method که در ES6 اضافه شده در کد زیر اومده است تا خیلی زود بریم سر اصل مطلب:

نحوه صدا زدن متد static در جاوا اسکریپت
نحوه صدا زدن متد static در جاوا اسکریپت


همان طور که در کد بالا مشخص هست کافیه بااستفاده از کلمه static اون رو داخل class تعریف کنیم و به روش زیر هم می تواند صدا زده شود:

نحوه صدا زدن متد static در جاوا اسکریپت
نحوه صدا زدن متد static در جاوا اسکریپت


خوب نکته ی مهم در اینه که متد static برای صدا زده شدن نیاز به ساخت شی از کلاس ندارد و اصلا نباید از روی شی صدا زده شود! چون اون متد رو شناسایی نمیکنه و خطا میخوریم!

پس باید به صورتی که در کد مشاهده می کنید از اون استفاده کنیم و صدا زدن static method ها از روی خود کلاس امکان پذیر هست.

اگر به صورت دقیق تر بخواهیم بررسی کنیم در واقع متد از نوع static به prototype کلاس شما اضافه نمیشه و می تونید با بررسی proto شی ساخته شده مطمئن شوید که متد static رو نمی بینید چون این متد به کلاس شما اضافه شده است نه به prototype کلاس پس نمیتونیم از طریق شی صدا بزنیمش.

نکته ی مهم جملات بالا !

همان طور که متوجه شدید داخل متد static ما به صفات شی دسترسی نداریم! و نباید از اونها استفاده کنیم.

بنابراین فرض کنیم اگر یک property داخل کلاس خودمون به اسم name داشته باشیم و داخل متد static اون رو به صورت this.name صدا بزنیم مقدار undefined می گیریم!!

اما چگونه داخل متد های دیگر static method رو صدا بزنیم؟

نحوه ی صدا زدن static method از توابع دیگر کلاس
نحوه ی صدا زدن static method از توابع دیگر کلاس

صدا زدن متدهای static از توابع دیگر با استفاده از this.staticClassName امکان پذیر نیست بلکه باید همان طور که در کد بالا مشاهده می کنیم از this.constructor استفاده کنیم.

موارد کاربرد static method ها در جاوا اسکریپت

اگر به سورس کد های مهم نگاه بندازیم می بینیم که بیشترین استفاده از static method ها به عنوان توابع helper هست.

در مواردی نیز به عنوان جایگزینی برای constructor ها می توانند استفاده شوند مثلا زمانی که قصد ساخت یک شی از کلاسی رو دارید.

برای مثال کد زیر رو نگاه کنید که از static method به عنوان یک helper برای مقایسه ۲ تا شی از همان کلاس استفاده کرده است:

استفاده از static method به عنوان helper
استفاده از static method به عنوان helper

نوشتن متد static برای مقایسه object ها یکی از موارد مرسوم هست به این دلیل که ما در کلاس خودمون به متدی نیاز داریم که

  • صرفا برای صفات شی خاصی نیست
  • از طرفی به صورت کلی تر می خواهیم کد هایی رو در یک wrapper و مربوط به همین کلاس داشته باشیم

پس در این مورد و موارد مشابه static method ها می تونند راهگشا باشند.

مثال دیگری رو ببینیم که به عنوان جایگزین constructor می تونیم از متد static استفاده کنیم:

ساخت شی از کلاس با استفاده از static method
ساخت شی از کلاس با استفاده از static method

استفاده از static method در این کد به ما این امکان را داده است که اگر نخواستیم یک article با عنوان مشخص و تاریخ ایجاد کنیم از طریق متد createTodays یک article به تاریخ امروز و بدون عنوان ایجاد کنیم.

خوب در این پست نحوه ی تعریف و استفاده از متد های static در جاوا اسکریپت رو دیدیم و برای موارد بیشتر می تونید لینک زیر رو مشاهده کنید:

https://javascript.info/static-properties-methods
جاوا اسکریپتjsبرنامه نویسی
Web Developer
شاید از این پست‌ها خوشتان بیاید