کد زیر رو در نظر بگیرید:

const alex = { hairs: true }
const john = { hairs: true }

alert(alex === john); // false

خب اگه کد بالا رو اجرا کنیم خروجی false خواهد بود. 

توی مقایسه‌ی دو آبجکت مشابه جواب همیشه false هست.

چرا 🤔 ؟ توی جاوا اسکریپت زمان مقایسه دو آبجکت با هم، رفرنس یا آدرس هر دو آبجکت توی حافظه مقایسه میشه، نه مقدار اونها. برای همین دو آبجکت ممکنه ظاهر یکسانی داشته باشن اما آدرس اونها توی حافظه با هم متفاوت هست.

چکار کنیم هنگام مقایسه دو آبجکت جواب true بگیریم؟ باید هر دو آبجکت به یک آدرس از حافظه اشاره کنن که با کد زیر امکان پذیر هست:

let fruit1 = { name: 'potato' };
let fruit2 = fruit1;

console.log(fruit2 === fruit1); // true

توی کد بالا و خط دوم وقتی که یک آبجکت رو برابر یک آبجکت دیگه قرار دادیم، در واقع آدرس حافظه متغیر fruit1 به متغیر fruit2 داده شد.

 

منبع: