"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا هناك كائنان متطابقان في JavaScript غير متساويين؟

لماذا هناك كائنان متطابقان في JavaScript غير متساويين؟

تم النشر بتاريخ 2024-12-21
تصفح:959

Why Are Two Identical JavaScript Objects Unequal?

حيرة مساواة الكائنات

على الرغم من مشاركة الخصائص المتطابقة، إلا أن كائنين متطابقين ظاهريًا يظلان غير متساويين في JavaScript. لقد حيرت هذه الظاهرة الكثيرين، نظرًا لمقتطف الكود أدناه:

var a = {};
var b = {};

console.log(a==b); //returns false
console.log(a===b); //returns false

فهم عوامل المساواة

يكمن التباين بين نتائج عوامل المساواة العادية (==) والصارمة (===) في تحويل النوع . تؤدي المساواة العادية إلى تحويل النوع الضمني، في حين أن المساواة الصارمة لا تفعل ذلك. ومع ذلك، في هذه الحالة، كلا المتغيرين عبارة عن كائنات، لذا فإن تحويل النوع غير ذي صلة.

هوية الكائن

يتم تقييم مقارنات الكائنات على أنها صحيحة فقط عند مقارنة نفس مرجع الكائن، بغض النظر عن عامل المساواة المستخدم. بمعنى آخر، a == a، a == b (إذا كان b هو اسم مستعار لـ a)، ولكن a != c (إذا كان c كائنًا مختلفًا).

الآثار

هذا السلوك الفريد له آثار على البرمجة الشيئية. كائنان لهما خصائص متطابقة ولكن مراجع مختلفة يعتبران غير متساويين، حتى لو كانا يمثلان نفس الكيان في العالم الحقيقي.

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

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

أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3