Вам необходимо заключить скобки вокруг объекта, иначе он будет интерпретироваться как блок из-за открывающихся и закрывающихся фигурных скобок.
({'a' : 'apple', 'b' : 'bat', 'c' : 'cat'}).each(function(i){
alert(i);
});
Когда вы делаете это без скобок, интерпретатор "увидит" это:
{ // open block statement
'a' : 'apple', 'b' : 'bat', 'c' : 'cat' // not a valid expression!
}.each(function(i){ // there's no dot property access notation for statements!
alert(i);
});
Это блок с одним выражением. Однако, поскольку это недопустимое выражение, оно вернет синтаксическую ошибку. Даже если бы это было допустимое выражение, оно все равно выдало бы ошибку, поскольку у блоков нет свойств, и, следовательно, нотация доступа к свойствам точки не применима:
{ console.log("hello world"); }.each(function(){})
Таким образом, вы должны сообщить интерпретатору, что объект является выражением, заключив его в скобки, чтобы устранить неоднозначность (поскольку вы не можете поместить оператор в скобки - только выражения).