الرمز نوع بيانات بدائي جديد يمثل التفرد. إنه نوع البيانات السابع في JavaScript.
أماغير محددة وخالية وسلسلة ورقم وكائن
ويتم إنشاء قيم الرمز من خلال وظيفة الرمز. هناك نوعان من أسماء السمات للكائنات، أحدهما هو السلسلة الأصلية، والآخر هو نوع الرمز الجديد . أسماء السمات هي من نوع الرمز وهي فريدة من نوعها، مما يضمن أنها لن تتعارض مع أسماء السمات الأخرى.
دعونا s1=الرمز () دعونا s2=الرمز () console.log(s1) //رمز() console.log(s2) //رمز() console.log(s1===s2) //خطأ شنيع // يمكن لوظيفة الرمز قبول السلسلة كمعلمة، مما يشير إلى وصف مثيل الرمز Let s1=Symbol('xxx') دعونا s2=الرمز('hhh') console.log(s1) //الرمز (xxx) console.log(s2) // الرمز (سه) console.log(s1===s2) // خطأ، لا يمكنك استخدام الأمر الجديد قبل نسخ
وظيفة الرمز، وسيتم الإبلاغ عن خطأ. وذلك لأن الرمز الذي تم إنشاؤه هو قيمة نوع بدائية، وليس كائنًا. أي أنه نظرًا لأن قيم الرمز ليست كائنات، فلا يمكن إضافة الخصائص. أي ما يعادل سلسلة خاصة.
يقبل Code.for() سلسلة كمعلمة، ثم يبحث عن قيمة رمز مع المعلمة كاسم لها. إذا كان هناك، قم بإرجاع قيمة الرمز، وإلا قم بإنشاء قيمة رمز جديدة باستخدام السلسلة كاسم لها وقم بتسجيلها عالميًا.
دعونا s1 = الرمز.ل('xxx') دعونا s2 = الرمز.ل('xxx') console.log(s1 === s2) // صحيح وظيفة فو () { إرجاع الرمز لـ ('مرحبًا') } كونست س = فو () const y=Symbol.for('مرحبًا') console.log(x === y)//true
Code.for() وSymbol() سيولدان رمزًا جديدًا. والفرق هو أن الأول سيتم تسجيله في البيئة العالمية للبحث، بينما لن يتم تسجيل الأخير. لن يُرجع الدالة Code.for() قيمة جديدة لنوع الرمز في كل مرة يتم استدعاؤها، بل سيتحقق أولاً مما إذا كان المفتاح المحدد موجودًا بالفعل، ثم ينشئ قيمة جديدة إذا لم يكن موجودًا.
يقوم أسلوب Sympo.keyFor() بإرجاع مفتاح قيمة نوع الرمز المسجلة.
const s1 = الرمز('foo') console.log(Symbol.keyFor(s1)) // غير محدد const s2 = الرمز.for('foo') console.log(Symbol.keyFor(s2)) //fooيتم
للسمة نظرًا لأن قيم الرمز غير متساوية، فهذا يعني أنه يمكن استخدام قيم الرمز كمعرفات واستخدامها في أسماء السمات. من الكائنات للتأكد من أنها لن تظهر سمة بنفس الاسم. يكون هذا مفيدًا عندما يتكون الكائن من وحدات متعددة، لمنع الكتابة فوق المفتاح أو الكتابة فوقه عن طريق الخطأ.
درجة ثابتة = { تشانغ سان:{العنوان:'qqq'،الهاتف:'111'}، لي سي:{العنوان:'aaa'،الهاتف:'222'}، لي سي:{العنوان:'sss'،الهاتف:'333'}، } console.log(الصف) // تشانغ سان: {العنوان: "qqq"، الهاتف: "111"} لي سي: {العنوان: "sss"، الهاتف: "333"} // لا يمكن تكرار القيمة الرئيسية للكائن إذا كان هناك تكرار، فستحل قيمة القيمة اللاحقة محل القيمة السابقة // استخدم الرمز للحل، وهو ما يعادل سلسلة فريدة const stu1=Symbol('李思') const stu2=الرمز('李思') console.log(stu1===stu2) //خطأ شنيع درجة ثابتة = { [stu1]:{العنوان:'aaa'،الهاتف:'222'}، [stu2]:{العنوان:'sss'،الهاتف:'333'}، } console.log(الصف) //جون دو: {address:'sss',tel:'222'} جون دو: {address:'sss',tel:'333'} console.log(الصف[stu1]) // لي سي: {العنوان:'sss'، الهاتف:'222'} console.log(الصف[stu2]) // Li Si: {address:'sss',tel:'333'}
constsym=Symbol('imooc') مستخدم الفئة { منشئ (الاسم) { this.name=name هذا[sym]='imooc.com' } الحصول على الاسم () { إرجاع this.name+this[sym] } } مستخدم ثابت = مستخدم جديد ('www') // لا يمكن لطريقة in الانتقال إلى سمة الرمز لأنها مخفية for(let key in user){ console.log(مفتاح)//اسم } // لا يمكن لأسلوب Object.keys(obj) الانتقال إلى خاصية الرمز for(let key of Object.keys(user)){ console.log(مفتاح)//اسم } //Object.getOwnPropertySymbols(obj) يمكنه فقط الحصول على خاصية الرمز for(let key of Object.getOwnPropertySymbols(user)){ console.log(مفتاح)//الرمز(imooc) } // يمكن الحصول على خصائص الكائن Reflect.ownKeys(obj) for(let key of Reflect.ownKeys(user)){ console.log(مفتاح) //اسم //الرمز(إيمووك) }
تشير السلاسل السحرية إلى سلسلة أو قيمة محددة تظهر عدة مرات في الكود وتشكل اقترانًا قويًا بالكود. يجب أن يحاول الكود ذو الأسلوب الجيد التخلص من السلاسل السحرية واستبدالها بمتغيرات ذات معاني واضحة.
وظيفة الحصول على المنطقة (الشكل) { المساحة المسموحة = 0 التبديل (الشكل) { حالة "المثلث": المساحة = 1 استراحة حالة "الدائرة": المساحة = 2 استراحة } منطقة العودة } console.log(getArea('المثلث')) // المثلث والدائرة عبارة عن سلاسل سحرية. يظهر عدة مرات ويشكل "اقترانًا قويًا" مع الكود، وهو أمر لا يفضي إلى التعديل والصيانة اللاحقة. نوع الشكل الثابت = { المثلث: الرمز ()، الدائرة: الرمز () } وظيفة الحصول على المنطقة (الشكل) { المساحة المسموحة = 0 التبديل (الشكل) { شكل الحالة: نوع المثلث: المساحة = 1 استراحة شكل الحالة: نوع الدائرة: المساحة = 2 استراحة } منطقة العودة } console.log(getArea(shapeType.triangle))
أنا مبتدئ في الواجهة الأمامية، إذا كان هناك أي خطأ في المقالة، فيرجى إعطائي بعض النصائح والمناقشة!
[توصية دروس فيديو ذات صلة: الواجهة الأمامية للويب]
ما ورد أعلاه هو المحتوى التفصيلي لتعلم نوع بيانات JavaScript وتحليل موجز لنوع الرمز. لمزيد من المعلومات، يرجى الانتباه إلى المقالات الأخرى ذات الصلة على موقع PHP الصيني!