سطح دسترسی

سطح دسترسی مشخص می‌کند که متدهای یک کلاس یا فیلدهای آن، در چه جای برنامه قابل دسترسی هستند. در جاوااسکریپت سه سطح دسترسی وجود دارد :

  • public (عمومی)
  • private (خصوصی)
  • protect (محافظت شده)

در این درس می‌خواهیم به سطح دسترسی private و public نگاهی بیندازیم. سطح دسترسی public زمانی مورد استفاده قرار می‌گیرد که شما بخواهید به یک متد یا فیلد در خارج از کلاس دسترسی یابید. به عنوان مثال به کد زیر توجه کنید :

  1: class Test
  2: {
  3:      number1 = 10;
  4:     #number2 = 20;
  5: }
  6: 
  7: var x = new Test();
  8: 
  9: console.log(x.number1);
 10: console.log(x.#number2);
Uncaught SyntaxError: Private field '#number2' must be declared in an enclosing class

در جاوااسکریپت، در حالت پیشفرض، متدها و فیلدها دارای سطح دسترسی عمومی یا public هستند. در این مثال یک کلاس با نام Test تعریف کرده‌ایم. سپس دو فیلد، یکی به صورت public (خط 3) و دیگری به صورت private در داخل کلاس Test تعریف می‌کنیم (خط 4).

در خط 7 یک نمونه از کلاس ایجاد کرده و در خطوط 9 و 10 سعی می‌کنیم که مقدار فیلدهای آن را چاپ کنیم. همانطور که مشاهده می‌کنید برنامه با خطا مواجه می شود. دلیل آن هم این است که اعضای private در خارج از کلاس قابل دسترسی نیستند. حال خط 10 را حذف و دوباره برنامه را اجرا کنید. خروجی عدد 10 را نشان می دهد. چون مقدار فیلد number1، عدد 10 بود و این فیلد به صورت عمومی یا public تعریف شده و در خارج از کلاس قابل دسترسی می باشد. نکته ای که در خط 10 وجود دارد این است که برای دسترسی به اعضای private باید علامت # را قبل از نام آنها بنویسید. به طور کلی فیلدها و متدهایی که به صورت public تعریف می‌شوند در داخل کلاس و نمونه‌های ایجاد شده از آن قابل دسترسی و فیلدها و متدهایی که به صورت private تعریف می‌شوند فقط در داخل کلاس قابل دسترسی هستند و برای دسترسی به آنها در خارج از کلاس باید از خاصیت‌ها استفاده کرد که در درس بعد توضیح می‌دهیم. سطح دسترسی protect را بعد از مبحث وراثت در درسهای آینده آموزش می‌دهیم.