ในกรณีของคุณ C.prototype และ a[[prototype]] กำลังอ้างอิงวัตถุเดียวกันในตอนแรก จากนั้นคุณเปลี่ยน C.prototype เป็นวัตถุอื่นโดยสิ้นเชิง (ในหน่วยความจำ ) แต่การอ้างอิงของ a[[prototype]] ยังคงชี้ไปที่วัตถุเก่า

ดังนั้นคุณกำลังคิดว่าคุณได้กลายพันธุ์วัตถุเดียวกัน แต่ในความเป็นจริงคุณเพิ่งสร้างข้อมูลอ้างอิงใหม่ทั้งหมดโดยการทำงานที่ได้รับมอบหมายใหม่

หากต้องการให้ชี้ไปที่วัตถุเดียวกันในหน่วยความจำ ให้ทำดังต่อไปนี้:

Object.setPrototypeOf(a, C.prototype); // thats like a[[prototype]] = C.prototype