شرح سجلات جافا سكريبت؟

Shrh Sjlat Jafa Skrybt



يأتي جافا سكريبت مع نوع البيانات غير البدائي ' هدف 'والتي تم اشتقاقها بمساعدة أنواع البيانات البدائية (المضمنة). يعمل 'الكائن' كمثيل للوصول إلى أعضاء JavaScript. يتم استخدامه لاستدعاء وظيفة JavaScript لأداء المهمة المحددة التي لا تستطيع أنواع البيانات الأولية القيام بها. ومع ذلك ، فإن أحد عيوب هذا النوع من البيانات هو أنه يؤدي عملية المقارنة على أساس هويته ، وليس على أساس المحتوى. لحل هذه المشكلة ، تقدم JavaScript نوع البيانات الجديد ' السجلات 'لأنها تقارن بدقة على أساس محتوياتها وليس على أساس الهوية.

يشرح هذا الدليل سجلات JavaScript.







ما هي 'السجلات'؟

جافا سكريبت ' السجلات 'هو نوع بدائي جديد (سلاسل ، أرقام ، رموز) مشابه لما هو مضمن . والفرق الوحيد هو أن 'السجلات' غير قابلة للتغيير تمامًا ، أي أن قيمة مفاتيحها لا يمكن تغييرها بمجرد تهيئتها.



بناء الجملة



بناء جملة ' سِجِلّ 'مطابق لـ' كائن '، ولكنه يتطلب' # (تجزئة) 'قبل الأقواس المتعرجة التي تشير إلى أنه' سجل ':





const recoredName = # {
/ *
المفتاح: القيمة
/ *
}


دعنا نستخدم الصيغة المذكورة أعلاه لإنشاء سجل جديد.

كيف تنشئ سجلات؟

لإنشاء سجل ، حدد رمز '# (التجزئة)' في بداية الأقواس المتعرجة كما هو موضح في كتلة التعليمات البرمجية أدناه:



شخص const = # {
fname: 'أو' و
lname: 'عثمان' و
عمر: واحد وعشرين و
}
وحدة التحكم ( person.fname )
وحدة التحكم ( person.lname )
وحدة التحكم ( شخصية )


في كتلة التعليمات البرمجية أعلاه:

    • ال ' شخص يشير 'إلى' تسجيل 'جديد به المفاتيح التالية' fname 'و' lname 'و' age '.
    • بعد ذلك ، ' وحدة التحكم. سجل() 'طريقة عرض قيم مفتاح' الشخص 'واحدة تلو الأخرى على التوالي.

ملحوظة: يمكن للمستخدم أيضًا تحديد محتوى 'السجلات' في سطر واحد مثل هذا:

شخص const = # {fname: 'علي' ، lname: 'عثمان' ، العمر: 21}


انتاج |


يمكن ملاحظة أن الإخراج يعرض جميع القيم الأساسية للسجل الذي تم إنشاؤه 'الشخص'.

تحديد السجلات

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

const newRecord = # {
الوصول: [ 'لغة البرمجة' و 'CSS' و 'جافا سكريبت' ]
}
وحدة التحكم ( شخص. آر )


في سطور الكود أعلاه:

    • ال ' رقم قياسي جديد 'يهيئ مصفوفة تسمى' arr 'كمفتاح لها.
    • بعد ذلك ، ' وحدة التحكم. سجل() 'يعرض قيمة المفتاح' arr 'المحددة في' newRecord '.

انتاج |


تعرض وحدة التحكم 'TypeError (تمرير نوع غير متوقع)' لأن 'السجلات' لا تقبل مصفوفة كمفتاح.

فهم سجلات JavaScript باستخدام الأمثلة

يتضمن هذا القسم استخدامات 'السجلات' عمليًا بمساعدة أمثلة معينة.

لنبدأ بالمثال الأول.

مثال 1: السجلات غير قابلة للتغيير بشدة

جافا سكريبت ' السجلات 'أنواع بدائية غير قابلة للتغيير بعمق. تعني عبارة 'غير قابلة للتغيير بشدة' أن جميع القيم الأساسية للسجل لا يمكن تعديلها أو تغييرها على أي مستوى بمجرد تعيينها. تشير الأنواع 'البدائية' إلى جميع أنواع بيانات JavaScript الأساسية مثل السلسلة ، والرقم ، والقيمة الفارغة ، وغير المحددة ، وغيرها الكثير.

تُظهر كتلة التعليمات البرمجية التالية المفهوم المذكور عمليًا:

const myRecord = # {
اسم: 'أو' و
عمر: واحد وعشرين و
}
myRecord.name = 'هارون'


في كتلة التعليمات البرمجية أعلاه ، ' تسجيلي ' مفتاح ' اسم 'قيمة بعد التهيئة.

انتاج |


يمكن ملاحظة أن المترجم يظهر 'TypeError' في تعديل قيمة المفتاح 'newRecord'.

مثال 2: السجلات مقارنة

الميزة الرئيسية لـ 'السجلات' هي أنه تتم مقارنتها على أساس قيمها ، وليس على أساس الهوية. في حين أن 'الكائنات' تقارن حسب هوياتها وليس قيمها. في حالة تساوي قيمتين من السجلات ، يسترجع المحول البرمجي القيمة true.

دعنا نراها عمليًا بمساعدة سطور معينة من التعليمات البرمجية:

const myRecord = # {
اسم: 'أو' و
عمر: واحد وعشرين و
}
وحدة التحكم ( myRecord === # {
اسم: 'أو' و
عمر: واحد وعشرين و
} ) ؛


هنا ، يُنشئ مقتطف الشفرة أعلاه سجلين تتم مقارنتهما بمساعدة ' المساواة الصارمة (===) ”عامل التشغيل.

انتاج |


الناتج يعيد ' حقيقي 'القيمة المنطقية التي تعني أن العوامل المحددة ، أي' السجلات 'متساوية.

مثال 3: تحويل سجل إلى كائن

يمكن أيضًا تحويل 'سجلات' جافا سكريبت إلى نوع بيانات 'كائن' بمساعدة مُنشئ 'كائن'. هنا هو تطبيقه العملي:

يترك myRecord = # {واحد: 1 ، اثنان: 2}
وحدة التحكم ( هدف ( تسجيلي ) )
وحدة التحكم ( typeof myRecord )


في سطور التعليمات البرمجية أعلاه:

    • الأول ' lconsole.and () تستخدم طريقة 'مُنشئ' الكائن 'لتحويل' تسجيلي 'في' كائن.
    • تستخدم طريقة 'console.log ()' الثانية ' نوع من 'الكلمة الرئيسية للتحقق من نوع' myRecord '.

انتاج |


يعرض الإخراج 'newRecord' المحول كـ ' هدف 'الذي يؤكد أن' newRecord 'قد تم تحويله بنجاح إلى' كائن '.

مثال 4: تحويل كائن إلى سجل

يمكن للمستخدم أيضًا تحويل 'كائن' إلى 'تسجيل' لأغراض المقارنة بمساعدة ' سِجِلّ() ' طريقة. دعونا نفعل ذلك عمليا:

يترك myObj = { واحد: 1 ، اثنين: 2 }
يترك myRecord = سجل ( myObj )
وحدة التحكم ( تسجيلي )


الآن ، يستخدم مقتطف الشفرة أعلاه ' سِجِلّ() 'لتحويل الكائن' myObj 'إلى' myRecord '.

انتاج |


يُظهر الإخراج الكائن المحول 'myObj' إلى محتوى 'myRecord' بنجاح.

مثال 5: إنشاء سجلات جديدة من السجلات الموجودة

كما تمت مناقشته في المثال الأول ، 'السجلات' غير قابلة للتغيير ، أي لا يمكن تعديل قيمها الرئيسية. ومع ذلك ، يمكن للمستخدم إنشاء 'سجل' جديد من 'السجل' الحالي إلى جانب إضافة بعض القيم الأخرى.

اتبع مقتطف الشفرة المحدد لإنشاء سجل جديد من السجل الحالي:

يترك oldRecord = # {A: 1، B: 2} ؛
يترك newRecord = # {... myRecord ، ج: 3 ، د: 4}
وحدة التحكم ( رقم قياسي جديد )


في كود JavaScript أعلاه:

    • ال ' oldRecord 'يشير إلى سجل موجود يحتوي على قيمتين أساسيتين.
    • التالي ' رقم قياسي جديد 'يتوافق مع سجل جديد تم إنشاؤه بمساعدة' oldRecord 'الموجود وأيضًا عن طريق إضافة قيم المفاتيح المحددة الجديدة.
    • أخيرًا ، ' وحدة التحكم. سجل() يعرض 'السجل الذي تم إنشاؤه حديثًا باسم' newRecord '.

انتاج |


يعرض الإخراج جميع القيم الأساسية للسجل الذي تم إنشاؤه حديثًا.

مثال 6: الوصول إلى السجلات باستخدام أسلوب 'Object.keys ()'

يمكن للمستخدم استخدام JavaScript المدمج ' مفاتيح () ' طريقة ' هدف 'للوصول إلى مفاتيح السجل. في هذا السيناريو ، يتم استخدامه للوصول إلى مفاتيح 'myRecord':

يترك myRecord = # {A: 1، B: 2} ؛
يترك RecordKeys = Object.keys ( تسجيلي ) ؛
وحدة التحكم ( RecordKeys )


يستخدم مقتطف الشفرة أعلاه ' Object.keys () 'للوصول إلى جميع المفاتيح الموجودة في' myRecord '.

انتاج |


يُظهر الإخراج جميع مفاتيح 'myRecord' في تنسيق المصفوفة وأيضًا مع فهارسها بتنسيق زوج المفتاح والقيمة.

خاتمة

جافا سكريبت ' السجلات 'هي نوع بيانات المستوى المتقدم الذي لا يمكن تغييره بعمق. إنه يعمل بشكل مشابه لـ 'كائن' ولكن الاختلاف الرئيسي هو أنه يمكن تغيير قيمته أو تحديثها بمجرد تعيينها. يتطلب رمز '# (hash)' قبل الأقواس المتعرجة للإعلان وإلا فإنه يعمل ككائن. شرح هذا الدليل بإيجاز نوع بيانات JavaScript Records.