Обратите внимание на предостережения в комментариях о том, что это неправильная версия для испанского языка.
Но если вы все еще хотите это сделать, использование замены регулярного выражения для результата выше, вероятно, является самым простым. Это немного другая формулировка вашей версии, с добавленным вызовом замены. Это также позволяет вам указать дату, по умолчанию на сегодня, если она не указана:
let formatDate = (date = new Date()) => date == "Invalid Date"
? '-'
: date.toLocaleDateString('es-ES', {day: 'numeric', month: 'short'})
.replace(/\b([a-z])/, (s, w) => w.toUpperCase())
console.log(formatDate())
console.log(formatDate(new Date(1776, 7, 4)))
console.log(formatDate(new Date(1862, 4, 5)))
console.log(formatDate(new Date('foo-bar-baz')))