Почему этот объект не передается по ссылке, когда ему присваивается что-то еще?

Я знаю, что в JS объекты передаются по ссылке, например:

function test(obj) {
    obj.name = 'new name';
}

var my_obj = { name: 'foo' };
test(my_obj);
alert(my_obj.name); // new name

Но почему не работает следующее:

function test(obj) {
    obj = {};
}

var my_obj = { name: 'foo' };
test(my_obj);
alert(my_obj.name); // foo

Я установил объект{} (пусто), но это все еще говоритfoo.

Кто-нибудь может объяснить логику этого?

Ответы на вопрос(4)

Ваш ответ на вопрос