Почему для этой карты "forEach не является функцией"?

Это, наверное, что-то действительно немое, но я не понимаю, почему это не работает.

var a = {"cat":"large"};

a.forEach(function(value, key, map){
    console.log(value);
});

Uncaught TypeError: a.forEach не является функцией

http://jsfiddle.net/ty7z6pse/

Ответ 1

Объект не имеет forEach, он принадлежит к Array прототипу. Если вы хотите выполнить итерацию каждой пары значений ключа в объекте и принять значения. Вы можете сделать это:

Object.keys(a).forEach(function (key){
    console.log(a[key]);
});

Замечание по использованию: для объекта v = {"cat":"large", "dog": "small", "bird": "tiny"};, Object.keys(v) дает вам массив ключей, чтобы вы получили [ "cat", "dog", "bird" ]