Честно говоря, я думаю, что вывод консоли может быть довольно поучительным:
var a = {two: "World"};
a[1] = "Hello";
console.log(a);
// 1: "Hello"
// two: "World"
// > __proto__: Object
var b = new Date();
b[1] = 'Wow';
console.dir(b[1]); // console.log just returns the timestamp
// 1: "Wow"
// v __proto__: Date
// > constructor: function Date() { [native code] }
// > getDate: ...
Как видите, это оба просто объекты, один наследует от общего объекта, а другой от даты. Как и любому другому объекту, им может быть назначена пара ключ / значение, где ваша цифра 1 просто преобразуется в строку.
Это определенно грязное кодирование, если вы используете таким образом, но это довольно важная иллюстрация принципов JavaScript. Существует множество полезных способов расширения объектов, которые синтаксически похожи на то, что вы делаете.