0Pricing
JavaScript Academy · درس

السجل العام لـ Symbol

شاركوا Symbols باستخدام Symbol.for وkeyFor.

السجل العام لـ Symbol درس مجاني في JavaScript Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في JavaScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة JavaScript Academy 4 دروس في المجموع.

سجل مشترك

يتيح سجل الرموز العام إنشاء رموز مشتركة عبر البرنامج بأكمله باستخدام مفتاح، بدلًا من أن تكون فريدة دائمًا.

const a = Symbol.for("app.id")
const b = Symbol.for("app.id")
console.log(a === b)

Symbol.for

يبحث Symbol.for عن رمز باستخدام مفتاح نصي في السجل. فإذا كان الرمز موجودًا، يعيده؛ وإلا فإنه ينشئ رمزًا جديدًا ويخزنه.

const token = Symbol.for("token")
console.log(token.description)

الهوية المشتركة

بخلاف استدعاءات Symbol العادية، يعيد استدعاءا Symbol.for بالمفتاح نفسه الرمز نفسه تمامًا، ولذلك يتساويان عند المقارنة.

const x = Symbol.for("shared")
const y = Symbol.for("shared")
console.log(x === y)

مقارنة مع Symbol

ينشئ Symbol العادي دائمًا رمزًا فريدًا جديدًا، بينما يعيد Symbol.for استخدام إدخال موجود في السجل للمفتاح نفسه.

const local1 = Symbol("k")
const local2 = Symbol("k")
const global1 = Symbol.for("k")
const global2 = Symbol.for("k")
console.log(local1 === local2)
console.log(global1 === global2)

Symbol.keyFor

ينفذ Symbol.keyFor العملية العكسية: فعند تزويده برمز من السجل، يعيد المفتاح النصي المستخدم لإنشائه.

const s = Symbol.for("config")
console.log(Symbol.keyFor(s))

keyFor والرموز المحلية

بالنسبة إلى رمز غير موجود في السجل، يعيد Symbol.keyFor القيمة undefined، وهذه طريقة لاختبار ما إذا كان الرمز عامًا.

const local = Symbol("private")
const global = Symbol.for("public")
console.log(Symbol.keyFor(local))
console.log(Symbol.keyFor(global))

المشاركة بين الوحدات

يكون السجل مشتركًا حتى بين الأجزاء المختلفة من التطبيق، مثل الوحدات المنفصلة، مما يجعله مفيدًا لمفاتيح التنسيق المعروفة.

function getKey() { return Symbol.for("event.bus") }
console.log(getKey() === Symbol.for("event.bus"))

اصطلاحات التسمية

بما أن السجل عام، فابدأ مفاتيحك ببادئة لتجنب التصادم مع المكتبات الأخرى، مثل استخدام مساحة أسماء تحمل اسم تطبيقك.

const a = Symbol.for("myapp.user.id")
const b = Symbol.for("myapp.user.id")
console.log(a === b)

استمرار السجل

بعد تسجيل مفتاح، يعيد كل استدعاء لاحق لـ Symbol.for باستخدام ذلك المفتاح الرمز نفسه طوال مدة تشغيل البرنامج.

Symbol.for("once")
const again = Symbol.for("once")
console.log(Symbol.keyFor(again))

متى تستخدم السجل

استخدم السجل عندما يحتاج كود مستقل إلى الاتفاق على الرمز نفسه بالاسم. واستخدم Symbol العادي عندما يكون التفرد والخصوصية أهم.

const sharedFlag = Symbol.for("feature.enabled")
const privateFlag = Symbol("feature.enabled")
console.log(sharedFlag === Symbol.for("feature.enabled"))
console.log(privateFlag === Symbol.for("feature.enabled"))

الدمج مع مفاتيح الكائنات

تعمل رموز السجل كمفاتيح للكائنات أيضًا، مما يتيح مشاركة البيانات الوصفية التي يمكن لأي وحدة متعاونة قراءتها بإعادة جلب الرمز.

const META = Symbol.for("meta")
const obj = { [META]: "shared data" }
console.log(obj[Symbol.for("meta")])

اختبار سريع

اختبر معرفتك بالسجل.

مراجعة

مراجعة: يشارك السجل العام الرموز باستخدام المفاتيح.

  • يعيد Symbol.for استخدام رمز من السجل أو ينشئ رمزًا جديدًا
  • يعيد المفتاح نفسه الرمز نفسه
  • يعيد Symbol.keyFor المفتاح، أو undefined للرموز المحلية
  • استخدم مفاتيح ذات مساحات أسماء لتجنب التصادمات
const a = Symbol.for("k")
console.log(Symbol.keyFor(a))

الأسئلة الشائعة

هل درس «السجل العام لـ Symbol» مجاني؟

نعم — نص درس «السجل العام لـ Symbol» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة JavaScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة JavaScript Academy 4 دروس في المجموع.

ماذا ستتعلم في «السجل العام لـ Symbol»؟

شاركوا Symbols باستخدام Symbol.for وkeyFor. تتمرن على JavaScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ JavaScript Academy؟

لا تُشترط خبرة سابقة. JavaScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «السجل العام لـ Symbol»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس JavaScript Academy هذا؟

نعم. كل درس في JavaScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. إنشاء Symbols فريدة
  2. استخدام Symbols كمفاتيح للكائنات
  3. السجل العام لـ Symbol
  4. الرموز المعروفة جيدًا
← العودة إلى JavaScript Academy