برنامه نویسی

نمادهای جاوا اسکریپت – انجمن DEV

مزیت خوب داشتن افراد زیادی که در اطراف شما کدنویسی می کنند این است که در نهایت به بحث در مورد چیزهایی می پردازید که به عنوان یک توسعه دهنده ظاهر ساده نمی توانید آنها را به صورت روزانه ببینید.

این بار، من بر روی زمین فرود آمدم مفهوم نمادها در جاوا اسکریپت، چیزی است که من مجبور نیستم در محل کار با آن سر و کار داشته باشم، اما چیزی است که جاوا اسکریپت ارائه می دهد و بهتر است بفهمیم که چیست و چرا است 😀

نماد چیست؟

نماد یک نوع داده منحصر به فرد و تغییرناپذیر در جاوا اسکریپت است.

اگر چیزی به شما نمی گوید (که در واقع برای من اینطور نیست)، بدانید که یک نماد یکی از انواع داده های اولیه جاوا اسکریپت است. (در یک برگه جدید باز می شود) درست مانند رشته، بولی، عدد صحیح و غیره اما مانند یک کار می کند شناسه ویژه برای دسترسی به خصوصیات شی، و می توان آن را کم و بیش مانند یک کلید خصوصیت استفاده کرد.

بیایید تصور کنیم که یک شی داریم که در آن یک شخص را ذخیره می کنیم name، یک id و آنها age.

let person = {
  name: "Sophia",
  id: 12345678,
  age: 24, // (yes, I'm a trailing comma person)
};
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اگر بخواهیم به مقدار the دسترسی داشته باشیم id دارایی، ما فقط انجام می دهیم:

console.log(person.id); // will give us 12345678
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

عادلانه است که چنین فرض کنیم id به اندازه سایر خصوصیات یک فرد تغییر نخواهد کرد و کار خود را حول این فرض تنظیم می کنیم.

بیایید سعی کنیم با ایجاد یک نماد به عنوان یک کلید از آن استفاده کنیم. این را می توان با استفاده از Symbol() سازنده:

let symbolIDKey = Symbol("id");
let person = {
  name: "Sophia",
  [symbolIDKey] = 12345678,
  age: 30,
};
console.log(person[symbolIDKey]); // outputs 12345678
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

از نظر تئوری می توانید از No استفاده کنید "id" پارامتر (به درستی به عنوان توصیف کننده)، اما اگر بخواهید از بیش از یک کلید نماد استفاده کنید، دانستن اینکه کدام یک کدام است، چالش برانگیزتر خواهد بود.

پس چرا نمادها؟

استفاده از نمادها به عنوان کلیدهای شی به شما یک راه منحصر به فرد و تضمین شده برای دسترسی به ویژگی های شی ارائه می دهد. حتی اگر کد دیگری با همان کلید ویژگی ها را اضافه یا تغییر دهد.

مثلا:

let symbolIDKey = Symbol("id");
let person = {
  name: "Sophia",
  [symbolIDKey] = 12345678,
  age: 30,
};
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برخی کدهای دیگر، به هر دلیلی، سعی خواهند کرد انجام دهند

person.id = 00000000;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

با شما باقی خواهد ماند

let symbolIDKey = Symbol("id");
let person = {
  name: "Sophia",
  [symbolIDKey] = 12345678,
  age: 30,
  id: 00000000,
};

console.log(person.id); // will output 00000000
console.log(person[symbolIDKey]); // will output our more expected 12345678
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

کلید نماد به ما این امکان را می دهد که مقدار اصلی را حفظ کنیم حتی اگر کد دیگری سعی کند ویژگی را تغییر دهد id.

با نمادها می توانید ویژگی های خصوصی را به یک شی اضافه کنید که در نظر گرفته نشده است که توسط کدهای دیگر تغییر داده شود یا مستقیماً به آنها دسترسی پیدا کنید.

اما مراقب باشید! کلیدهای نمادها شمارش نمی شوند، که به این معنی است آنها در لیست کلیدهای شی نشان داده نمی شوند اگر سعی می کنید با حلقه ها و نگاشت ها به آنها دسترسی پیدا کنید.

شما حتی نمی توانید به کلیدهای نماد یک شی با استفاده از آن دسترسی داشته باشید keys() (در یک برگه جدید باز می شود) و نه با getOwnPropertyNames() (در یک برگه جدید باز می شود)!

شما باید از ساختار شی خود آگاه باشید و اگر نیاز به دسترسی به کلیدهای نماد دارید، باید از آن استفاده کنید. getOwnPropertySymbols() (در یک برگه جدید باز می شود).

و بس! فکر نمی‌کنم به این زودی‌ها از این روش استفاده کنم، اما خوب است بدانید که اگر نگران یکپارچگی داده‌هایی باشم که با آنها کار می‌کنم، راه‌هایی وجود دارد که بتوانم برخی از اطلاعات را در دنیای ضعیفی که جاوا اسکریپت اغلب ایجاد می‌کند حفظ کنم. برای ما.

منابع و الهام

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا