الرموز المعروفة جيدًا
خصّصوا السلوك باستخدام Symbol.iterator وغيرها.
الرموز المعروفة جيدًا درس مجاني في JavaScript Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في JavaScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة JavaScript Academy 4 دروس في المجموع.
الرموز المعروفة
الرموز المعروفة هي رموز مضمّنة مخزنة في كائن Symbol. وتتيح لك تخصيص سلوك الكائنات مع ميزات اللغة مثل التكرار والتحويل.
console.log(typeof Symbol.iterator)
console.log(typeof Symbol.toPrimitive)Symbol.iterator
يحدد Symbol.iterator كيفية تكرار الكائن باستخدام حلقة for-of وعامل النشر. وتوفره المصفوفات والسلاسل النصية المضمّنة مسبقًا.
const arr = [10, 20]
const it = arr[Symbol.iterator]()
console.log(it.next().value)جعل كائن قابلًا للتكرار
أضف طريقة Symbol.iterator تعيد مكرّرًا يحتوي على طريقة next لجعل أي كائن قابلًا للاستخدام في حلقة for-of.
const range = {
from: 1,
to: 3,
[Symbol.iterator]() {
let cur = this.from
const last = this.to
return {
next() {
return cur <= last ? { value: cur++, done: false } : { value: undefined, done: true }
}
}
}
}
for (const n of range) {
console.log(n)
}التكرار باستخدام عامل النشر
لأن Symbol.iterator يتحكم أيضًا في النشر، يمكن توسيع كائن قابل للتكرار مخصص داخل مصفوفة.
const nums = {
[Symbol.iterator]() {
let i = 0
return { next() { return i < 3 ? { value: i++, done: false } : { value: undefined, done: true } } }
}
}
console.log([...nums])Symbol.toPrimitive
يتيح Symbol.toPrimitive للكائن التحكم في طريقة تحويله إلى قيمة أولية في السياقات الرقمية أو النصية أو الافتراضية.
const money = {
amount: 50,
[Symbol.toPrimitive](hint) {
if (hint === "number") return this.amount
return "$" + this.amount
}
}
console.log(+money)
console.log(money + "")وسيط التلميح
يتلقى معالج التحويل تلميحًا بقيمة number أو string أو default، مما يتيح لك إعادة قيمة مناسبة لكل حالة.
const obj = {
[Symbol.toPrimitive](hint) {
return hint
}
}
console.log(+obj)
console.log(obj + "")
console.log(String(obj))Symbol.toStringTag
يخصص Symbol.toStringTag النص الذي تعيده toString الافتراضية للكائن، وهو مفيد لتسميات الأنواع المخصصة.
const widget = {
[Symbol.toStringTag]: "Widget"
}
console.log(Object.prototype.toString.call(widget))Symbol.hasInstance
يتيح Symbol.hasInstance للصنف أو الكائن تخصيص سلوك معامل instanceof.
class Even {
static [Symbol.hasInstance](num) {
return num % 2 === 0
}
}
console.log(4 instanceof Even)
console.log(3 instanceof Even)تستخدمها الأنواع المضمّنة أيضًا
تطبق المصفوفات والخرائط والمجموعات والسلاسل النصية جميعًا Symbol.iterator، ولذلك تعمل بسلاسة مع for-of والنشر.
const set = new Set([1, 2, 3])
console.log([...set])أهميتها
تُعدّ الرموز المعروفة نقاط توسعة؛ فهي تتيح لكائناتك الاندماج طبيعيًا مع عمليات اللغة المضمّنة بدلًا من التعامل معها كحالات خاصة.
const list = {
items: ["a", "b"],
[Symbol.iterator]() {
return this.items[Symbol.iterator]()
}
}
for (const x of list) {
console.log(x)
}اكتشافها
يعرض كائن Symbol هذه الرموز كخصائص ثابتة. ويمكنك الإشارة إليها مثل Symbol.iterator وSymbol.toPrimitive عند الحاجة.
console.log(typeof Symbol.iterator)
console.log(typeof Symbol.toStringTag)
console.log(typeof Symbol.hasInstance)اختبار سريع
اختبر معرفتك بالرموز المعروفة.
مراجعة
مراجعة: تخصص الرموز المعروفة سلوك اللغة.
- يتحكم Symbol.iterator في for-of والنشر
- يتحكم Symbol.toPrimitive في التحويلات باستخدام تلميح
- يضع Symbol.toStringTag تسميات للكائنات
- يخصص Symbol.hasInstance سلوك instanceof
const r = { [Symbol.iterator]() { let i = 0; return { next() { return i < 2 ? { value: i++, done: false } : { value: 0, done: true } } } } }
console.log([...r])تعلم JavaScript مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 59
- الدروس
- 200
الأسئلة الشائعة
هل درس «الرموز المعروفة جيدًا» مجاني؟
نعم — نص درس «الرموز المعروفة جيدًا» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة JavaScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة JavaScript Academy 4 دروس في المجموع.
ماذا ستتعلم في «الرموز المعروفة جيدًا»؟
خصّصوا السلوك باستخدام Symbol.iterator وغيرها. تتمرن على JavaScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ JavaScript Academy؟
لا تُشترط خبرة سابقة. JavaScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «الرموز المعروفة جيدًا»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس JavaScript Academy هذا؟
نعم. كل درس في JavaScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- إنشاء Symbols فريدة
- استخدام Symbols كمفاتيح للكائنات
- السجل العام لـ Symbol
- الرموز المعروفة جيدًا