W przypadku projektu, nad którym obecnie pracuję w języku JavaScript, używam formatów dziesiętnych, więc łatwiej jest obliczyć zamiast używać formatu godziny/minuty w ciągach (kalendarz powiązany projekt). Aby wyświetlić czas na ekranie użytkownika, kod czasowy musi być pokazywany jako hh: mm.Funkcja prototypowania języka JavaScript: dziesiętna wartość czasu na łańcuch czasu
Pomyślałem, że byłoby wspaniale, aby korzystać z funkcji tego prototypu String gdyż pozwala mi użyć kodu jak:
var time = 8.75;
document.write("Meeting at "+time.toTime()); // writes: Meeting at 8:45
tej pory mam, że prawie pracy, przy użyciu:
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;
}
Problem polega jednak na tym, że działa to tylko wtedy, gdy zmienna time
jest łańcuchem. W przeciwnym razie pojawi się niezdefiniowany błąd.
Czy istnieje jakikolwiek sposób zastosowania prototypu do innego obiektu w JavaScript, więc nie muszę używać time.toString().toTime()
?
Dzięki!
Czy 'Number.prototype.toTime' pomóc? I możesz stenografować do '(" + time) .toTime() 'w twoim aktualnym kodzie. – Passerby
możesz użyć 'Object.prototype', ponieważ wszystkie obiekty dziedziczą z niego. – TheBronx
Osobiście uważam, że jest to czystsze podejście do przekazywania wartości funkcji zamiast przedłużania prototypu. –