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

Я знаю, что в 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 .

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

52
задан Doorknob 7 December 2014 в 09:26
поделиться