Kopia obiektu JS według wartości vs kopia przez odniesienie

Grałem z chromowaną konsolą i zauważyłem coś, czego nie mogłem zrozumieć. Wiem, że w JS zmienne są kopiowane według wartości, a obiekty są kopiowane przez odniesienie. Poniższy kod działa poprawnie zgodnie z oczekiwaniami, co powoduje wyjście 2 i dowodzi, że obiekty JS działają jako odniesienie:

var objA = {a: 1};
var objB = objA;
objA.a = 2; 
objB.a; // 2

Jednak ten kod nie działa tak, jak powinien. Spodziewałem się, że objB.a wyjdzie2 ale to daje1 zamiast. Czemu?

var objA = {a: 1};
var objB = objA;
objA = {a: 2};  //Assigned whole object here instead property.
objB.a; //1 - Shouldn't this be 2 ??

questionAnswers(5)

yourAnswerToTheQuestion