В примере не сравниваются объекты и массивы. Вы просто добавляете ненужный слой, помещая объект в первый элемент массива.
Используйте объект, когда вам нужно обратиться к чему-то по имени.
var obj = {}
// 3 способа сделать то же самое:
var obj.newName = 'bob';
var obj['newName'] = 'bob';
var name = 'newName';
var obj[name] = 'bob';
2-й стиль на самом деле не нужен, и доступ к нему может быть медленнее, чем 1-й, но он помогает понять, как 3-й может быть полезен. Или вы могли бы сделать следующее:
var obj = { newName:'bob' }
Если вы хотите связку имен в объекте, это будет немного глупо:
var obj = { newName:'bob', anotherNewName:'sue', yetAnotherNewName:'billy' }
obj.newName === 'bob'
obj.anotherNewName === 'sue'
//etc...
Для этого предназначены массивы.
var listOfNewNames = ['bob','sue','billy']
listOfNewNames[0] === 'bob'
listOfNewNames[1] === 'sue'
//etc...
Конечно, ничто не мешает вам присвоить массив свойству объекта:
obj { listOfNewNames:['bob','sue','billy'] }
obj.listOfNewNames[0] === 'bob'
Или, как показано выше, несколько объектов в массиве:
var listOfMonsters = [
{ monsterName:'Grarrr',eats:'people' },
{ monsterName:'Wadsworth',eats:'other monsters'}
];
listOfMonsters[1].monsterName === 'Wadsworth'
Объекты, как правило, больше предназначены для хранения групп связанных значений и методов вместе для удобства ссылок. Массивы - это просто список элементов, к которым обычно можно применить все или которые относятся к одной и той же вещи.