Su un progetto al momento sto lavorando su JavaScript, sto usando i formati decimali quindi è più facile calcolare con piuttosto che utilizzare un formato ora/minuto nelle stringhe (calendario progetto correlato). Tuttavia, per visualizzare l'ora sullo schermo dell'utente, il codice temporale deve essere visualizzato come hh: mm.Funzione prototipo Javascript: valore decimale del tempo su stringa temporale
ho pensato che sarebbe bello utilizzare una funzione String prototipo di questo in quanto mi avrebbe permesso di utilizzare il codice:
var time = 8.75;
document.write("Meeting at "+time.toTime()); // writes: Meeting at 8:45
Finora, ho quasi che lavorare, utilizzando:
String.prototype.toTime = function(){
var hrs = this.toString().slice(0,this.indexOf("."));
var min = Math.round(this.toString().slice(this.indexOf("."))/100*60);
min = min<10 ? "0"+min : min.toString();
return hrs+":"+min;
}
Il problema, tuttavia, è che questo funzionerà solo se la variabile time
è una stringa. Altrimenti darà un errore indefinito.
Sarebbe possibile applicare il prototipo a un oggetto diverso in JavaScript, in modo da non dover utilizzare time.toString().toTime()
?
Grazie!
Sarebbe 'Number.prototype.toTime' aiutare? E puoi abbreviare a '(" "+ time) .toTime()' nel tuo codice corrente. – Passerby
puoi usare 'Object.prototype' come tutti gli oggetti ereditano da esso. – TheBronx
Personalmente trovo che sia un approccio più pulito per passare il valore ad una funzione invece di estendere il prototipo. –