Объекты в JavaScript. Почему выводится 1, а не 0?
Потому что ключ это всегда строка. Любые другие типы приводятся к строке
Как писали выше, при создании объектного литерала имя свойства можно указывать как в кавычках так и без. Поэтому var obj = {'one': 0,  one: 1,  0: 2} то же самое что:
var obj = {};
obj.one = 0;
И потом вы переписываете свойство:
obj.one = 1; (или obj[one] = 1; или obj['one']  = 1; все то же самое и все указывает на одно и то же свойство)