Avatar ·

مقارنة الكائنات في JavaScript: لماذا {} !== {} وكيفية المقارنة بشكل صحيح؟

مرحباً بالجميع! لقد بدأت للتو في تعلم JavaScript وواجهت موقفاً غير مفهوم. أحاول مقارنة كائنين يبدوان متطابقين تماماً، لكني أحصل على false.\n\nإليك الكود الخاص بي:\n\n```javascript\nconst user1 = { name: 'Анна', age: 25 };\nconst user2 = { name: 'Анна', age: 25 };\n\nconsole.log(user1 === user2); // false\nconsole.log(user1 == user2); // أيضاً false\n```\n\nكنت أتوقع أن تكون النتيجة true، لأن الخصائص وقيمها متطابقة! لكن JavaScript يقول إنهما مختلفان. لماذا يحدث هذا؟\n\nأفهم أنه بالنسبة للأرقام والسلاسل النصية، يعمل الأمر بشكل طبيعي:\n\n```javascript\nconsole.log(5 === 5); // true\nconsole.log('مرحباً' === 'مرحباً'); // true\n```\n\nأما مع الكائنات فلا. لقد جربت المقارنة باستخدام JSON.stringify:\n\n```javascript\nconsole.log(JSON.stringify(user1) === JSON.s