Because there aren't pointers in JavaScript.
At the beginning, you have something like this:
base ---+
|
v
{
cars ----+
} |
v
{
color: "blue"
brand: "Ford"
}
^
|
a -----------------+
Now both base.cars and a point to the same object.
Then, when you reassign base.cars, it becomes:
base ---+
|
v
{
cars ---> function(){ ... }
}
{
color: "blue"
brand: "Ford"
}
^
|
a -----------------+
a will continue to point at the object referenced by base.cars at the time of assignment. Then, even when base.cars get reassigned, it doesn't affect the value (and the reference) of a.
If you were able to create a pointer, it would look like this:
base ---+
|
v
{
cars ----+
} ^ |
| v
| {
| color: "blue"
| brand: "Ford"
| }
|
|
a --------+
...and after reassignment:
base ---+
|
v
{
cars ----> function(){ ... }
} ^
|
| {
| color: "blue"
| brand: "Ford"
| }
| |
| +--> Garbage collection
a --------+