бар и другой одинаковы, но:
var foo = {};
foo это не массив, а объект
foo['obj'] = new Date(); //same as
foo.obj = new Date();
преимущество f ['obj'] в том, что вы можете использовать недопустимые символы идентификатора, например:
foo['test-me'] // is valid
foo.test-me //not valid