کاربرد Symbol در جاوااسکریپت
نوع جدیدی از داده به تازگی در جاوااسکریپت اضافه شده است که روش استفاده از آن و قابلیتهای آن را میتوانید در این صفحه مشاهده کنید. این نوع داده در برخی زبانهای برنامهنویسی دیگر موجود است ولی با توجه به اینکه در جاوااسکریپت مفهومی جدید به حساب میآید، ممکن است درک کاربردهای آن به خوبی امکان پذیر نباشد.
کاربرد Symbol
Symbol یک نوع دادهی جدید اولیه یا Primitive است. درست مثل String و Number و نباید با یک شیء اشتباه گرفته شود. ویژگی منحصر به فرد Symbol تضمین یکتا بودن است. هر بار که یک Symbol جدید ایجاد میکنید، این اطمینان وجود دارد که مقدار آن قبلا در هیچ جای برنامه توسط خودتان یا توسط کتابخانههای دیگر مورد استفاده قرار نگرفته است.
به عبارت دیگر محتوای Symbol برای ما اهمیتی ندارد. فقط به دنبال منحصر به فرد بودن هستیم.
ویژگی مهم دیگر Symbol این است که هنگامی که به عنوان کلید در یک شیء استفاده میشود، محتوای آن به صورت معمول در حلقههای for..in قابل مشاهده نیست و استفاده کنندگان عادی بدون داشتن Symbol اصلی نمیتوانند آن را مشاهده کنند.
با توجه به موارد فوق سه کاربرد مهم برای Symbol وجود دارد:
- استفاده از ویژگی مخفی بودن برای اضافه کردن ویژگی به اشیایی که ممکن است دیگران هم آنها را تغییر بدهند. مثلا اضافه کردن یک فیلد به شیء user و استفادهی خصوصی از آن بدون اینکه کدهای دیگر نیاز به تغییری داشته باشند. برای مثال:
user[Symbol()] = myHiddenValue - استفاده از ویژگی منحصر به فرد بودن و درج اطلاعات در اشیا بدون نگرانی از اینکه در آینده تداخل نام به وجود بیاید. هنگام استفاده از رشتهها، دانسته یا ندانسته همیشه امکان تداخل نام وجود دارد.
- انجام تغییرات در برخی عملکردهای سنتی اشیاء با متدهای ویژه Symbol امکانپذیر است. مثلا تغییر دادن Iterator پیشفرض اشیا با دریافت Symbol.iterator به شکل زیر امکانپذیر است:
user[Symbol.iterator] = function
آیا از Symbol استفاده کنیم ؟
کاربرد اصلی Symbol در پروژههای بزرگ طراحی سایت یا در پروژههای Node.js است که کتابخانهها و بخشهای متعددی از سیستم روی اشیا کار میکنند. در پروژههای کوچک طراحی سایت کمتر نیاز است تا از این نوع داده کمک بگیرید ولی در صورت نیاز، Symbol میتواند پایداری و کارایی را در سطحی بالاتر برای کار برنامهنویسی جاوااسکریپت فراهم کند.