Вы должны установить d[a]
либо в ассоциативный массив, либо в объект:
d[a] = [];
d[a] = {};
Без настройки это происходит:
d[a] == undefined
, поэтому вы делаете undefined['greeting']=b;
, и по определению undefined не имеет свойств. Таким образом, полученная вами ошибка.