Passare una funzione a una proprietà di oggetto

mirkocaccia

Nuovo Utente
11 Lug 2015
3
0
0
Salve gente, ammetto di non essere molto pratico di Javascript e necessito di un aiutino.
Praticamente mi sto impiccando con questa proprietà di un oggetto Datepicker:

dates: {

days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"],
months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
},



Questo sopra è il codice originale e io lo vorrei cambiare per passare a "dates" una funzione che traduca tutti i valori dei mesi e i giorni in base alla lingua settata su un cookie....però non riesco proprio a passare una funzione....

A prescindere dalla traduzione, ho provato a passare semplicemente una funzione che abbia nel return semplicemente il valore riportato nel codice originale... ma nemmeno così va.

dates: function(){

return{
days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"],
months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]

}

}


dove sta la magagna? Potete aiutarmi?
Grazie in anticipo!!!
 
Ciao, ti spiego perché il tuo script non funziona e come risolvere.
Così come hai scritto, hai solo dichiarato una funzione attribuendola ad una variabile/proprietà dell'oggetto. Ovvero, a quel punto, la proprietà dates sarà lei stessa una funzione (e non ciò che la funzione dovrebbe restituire).
Tale funzione infatti non sarà eseguita fino a quando non la andrai a richiamare da qualche parte nel tuo script, come è normale che sia. In teoria potrà essere richiamata (e quindi eseguita) con la sintassi tuaFunzione(), cioè nel tuo caso sarà una cosa del genere: tuoOggetto.dates().

Chiaramente non è quello che serve a te.

Puoi risolvere principalmente in due modi.

  • Usare una funzione anonima auto-eseguibile:
    Codice:
    dates: (function(){
      return{
        //...//
      }
    })()

    Per maggiori informazioni sulle funzioni auto-eseguibili ti basterà fare qualche ricerca online.
    Avevo anche già risposto, qui, su un argomento del genere.
    ...
  • Dichiarare una funzione nominale e richiamarla sul valore della proprietà, o dove ti serve:
    Codice:
    function langDates(){
      return{
        //...//
      }
    }
    
    //.. e nel tuo oggetto//
    dates: langDates()
 

Discussioni simili