حيرة مساواة الكائنات
على الرغم من مشاركة الخصائص المتطابقة، إلا أن كائنين متطابقين ظاهريًا يظلان غير متساويين في 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