ตัวอย่างเช่น
if( x == y ){ปกติถ้าคุณเป็นโปรแกรมเมอร์สาย C ก็คงจะเคยชินกับการใช้ == สำหรับการเช็กว่ามันเท่ากันมั้ย
print("equal");
}
แต่ถ้าตัวแปรตัวนั้นดันเป็น "object" ขึ้นมาล่ะ มันจะเกิดอะไรขึ้น?
การที่เราจับตัวแปรธรรมดามาเท่ากับกัน จะเรียกว่า "compare by value" คือ x เก็บค่าอะไรอยู่ y เก็บค่าอะไรอยู่ก็เอาค่าพวกนั้นแหละมาใช้ตรงๆ เลย
อย่างเคสนี้ สั่ง x == y ก็จะได้ประมาณ 10 เท่ากับ 10 มั้ย
แน่นอนว่าสำหรับเคสง่ายๆ แบบนี้มันจะได้ true แน่นอนอยู่แล้ว
ปัญหาของเราจะเกิดขึ้นเมื่อตัวแปรที่จับมาเปรียบเทียบกันมันอยู่ในรูปของ Object เพราะว่าอะไรดูรูปข้างล่างนี้เลย

