Я натолкнулся на это по ошибке однажды, программируя игру:
var foo = function() { alert("Hello, World!"); }
foo[0] = "Zero";
foo[1] = "One";
foo[2] = "Two";
foo[3] = "Three";
foo(); // Alerts "Hello, World!"
alert(foo[2]); // Alerts "Two"
Почему JavaScript позволяет вам это делать? Это глюк?