آموزش ویژگی های ECMAScript 6 (جلسه 26) : آموزش کار با Symbol - قسمت 1



visibility  
mode_comment   ۰

همونطور که اطلاع دارید در جلسه قبل در مورد تغییرات و امکانات جدید Math در ES6 توضیحاتی رو قرار دادیم و شما رو بصورت کامل با اونا آشنا کردیم. در این جلسه میخوایم در مورد Symbol که یک نوع Primitive هست و در ES6 معرفی شده است، توضیحاتی رو قرار بدیم. برای این آموزش از این لینک به عنوان منبع استفاده میکنیم.

ECMAScript 6 آموزش کار با Symbol

همونطور که میدونین با معرفی  ES6 تغییرات و امکانات زیادی در Javascript معرفی شدند و کار با Javascript رو برای ما راحتتر کردند. در ES6 یک Type یا نوع Primitive جدید بنام سمبل اضافه شده است که به احتمال زیاد خیلی کم با اون آشنا هستید و یا اینکه کاربرد اون رو به خوبی متوجه نشده اید. در این آموزش سعی میشه شما رو با این نوع جدید آشنا کرده و کار با اون رو بهتون توضیح بدیم.

سمبل یک نوع Primitive جدید (مانند اعداد، رشته ها و ...) معرفی شده در ES6 هست که به شما این ضمانت رو میده که یکتا و Unique باشه و هیچ گاه با یک Symbol دیگر برخورد یا رابطه نداشته باشد.

ساخت یک Symbol جدید

شما به راحتی میتونین با صدا زدن تابع Symbol یک سمبل جدید رو به وجود بیارید. باید دقت داشته باشید که این یک تابع استاندارد هست و نباید با اون مثل یک Function constructor یا تابع سازنده برخورد کنید. پس نباید این تابع رو با کلمه کلیدی new فراخوانی کنید چون که با یک ارور TypeError مواجه خواهید شد.

متخصص جاوا اسکریپت
با جاوا اسکریپت جادوگری کنید! آیا می دونید با زبان جاوااسکریپت می تونید، برای فرانت اند و بک اند وبسایت ها برنامه نویسی کنید؟ همینطور اپلیکیشن دسکتاپ و موبایل بسازید؟ اگر دوست داری اینکارها رو انجام بدی و React, ElectronJS, ReactNative, NodeJS,MongoDB و ... رو تو یه دوره یاد بگیری، متخصص جاوااسکریپت سون لرن رو حتما ببین : متخصص جاوا اسکریپت arrow_back

هر بار که شما تابع Symbol رو فراخوانی میکنید، یک سمبل جدید و کاملا یکتا دریافت میشه. کد زیر رو در نظر بگیرید:

همونطور که میبینید در خط 1 و 2، دو Symbol رو ساختیم و اونا رو در متغیرهای foo و bar ذخیره کردیم. در خط 4 اونا رو با هم مقایسه کردیم و همونطور که میبینید در خروجی false نمایش داده میشه و نشون میده که سمبل ها یکتا هستند و با هم برابر نیستند.

شما میتونین در زمان ساخت سمبل ها یک label یا برچسب رو برای اونا در نظر بگیرید. برای اینکار میتونین یک رشته رو بعنوان آرگومان اول اونا قرار بدین. این برچسب هیچ تاثیری بر روی مقدار و یکتا بودن Symbol ها ندارد و بیشتر مواقع از اون به منظور Debugging یا خطایابی استفاده می شود. کد زیر رو در نظر بگیرید:

همونطور که میبینید برچسب baz برای هر دو سمبل قرار داده شده است. در خط 4 مجددا بررسی شده است که این دو سمبل با یکدیگر برابر هستند یا خیر و جواب False خواهد بود. بدلیل اینکه برچسب ها همونطور که قبلا نیز بیان شد، هیچ تاثیری در یکتا بودن سمبل ها ندارند.

در خط 5 با استفاده از console.log این سمبل رو در خروجی چاپ کردیم و خروجی بصورت زیر خواهد بود:چاپ کردن Symbol در Console

همونطور که میبینید سمبل به همراه برچسب مورد نظرش در Console چاپ شده است.

سمبل ها به چه دردی میخورن؟

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

همونطور که مشاهده میکنید یک کلاس بنام Application رو به وجود آوردیم و درون Constructor اون یک Switch رو قرار دادیم که محیط اجرا شدن برنامه رو چک میکنه. اگر در حالت Production یا Development باشیم، خروجی متناظر در خروجی چاپ خواهد شد (در غیر اینصورت با یک ارور مواجه خواهیم شد). در خط 16 و 17 دو ویژگی از نوع Symbol رو به کلاس Application نسبت دادیم. در نهایت نیز کلاس مورد نظر رو با Application.DEV نمونه سازی کردیم. با اینکار Development در خروجی چاپ خواهد شد.

more  بیشتر بخوانید : ترفندهای پیشرفته jQuery (قسمت 31)

رشته ها و اعداد مقادیر یکتا نیستند. عدد 2 یا رشته Development میتونه در دیگر جاهای برنامه برای منظورهای متفاوت نیز مورد استفاده قرار بگیره. با استفاده از Symbol ها در چنین مواقعی، مطمئن خواهیم شد که این مقادیر یکتا هستند و با هیچ جای برنامه ارتباطی ندارند و میتونیم از اونا برای ثابتها و مواقع این چنینی استفاده کنیم.

در جلسه بعد با ادامه این موضوع در خدمتتون خواهیم بود.

موفق و پیروز باشید.

یا علی

comment دیدگاه کاربران
ارسال نظرات

کاربر گرامی، امکان ارسال نظر و پشتیبانی برای دوره های مجازی فقط برای دانشجویان این دوره امکان پذیر می باشد.