javascript задача — три объекта

Давайте рассмотрим задачку.
Что нам вернет функция?

(function() {
   var foo = new Object();
   var bar = new Object();
   var map = new Object();map[foo] = 'foo'; 
   map[bar] = 'bar';
   return map[foo];
})();

Решение.

Сначала у нас создаются объекты foo, bar, map.
Затем в строке 4 мы, используем объект в качестве ключа map, но там ожидалась строка!
И вот тут-то и происходит магия преобразования. foo — это объект и он преобразуется в строку, т.е. в ‘[object Object]’.
Со строчкой 5 происходит то же самое. Таки образом, мы присваиваем свойству объекта ‘[object Object]’ сначала значение ‘foo’, затем значение ‘bar’.
Очевидно, функция выведет ‘bar’.
Хотите быть в курсе новых статей?