Şu an üzerinde çalışmakta olduğum bir projede, ondalık biçemler kullanıyorum, bu yüzden dizeleri bir saat/dakika biçimi kullanmak yerine hesaplaması daha kolay (takvim) ilgili proje). Kullanıcı ekranındaki zamanı görüntülemek için, zaman kodu ss: dm olarak gösterilmelidir.Javascript prototype işlevi: bir zaman dizgesine ondalık zaman değeri
bu beni gibi kod kullanmasına izin vereceğini olarak bunun için bir dize prototip işlevini kullanmak için harika olacağını düşündüm:
var time = 8.75;
document.write("Meeting at "+time.toTime()); // writes: Meeting at 8:45
Şimdiye kadar, bunu var neredeyse kullanarak, çalışma:
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;
}
Sorun, ancak bu, yalnızca time
değişkeninin bir dizgeyse çalışacağıdır. Aksi halde tanımlanmamış bir hata verecektir.
Prototip'i JavaScript'te farklı bir nesneye uygulamanın herhangi bir yolu var mı? Böylece time.toString().toTime()
'u kullanmak zorunda kalmam?
Teşekkürler!
'yardımcı Number.prototype.toTime' misiniz kodunuzu basitleştirilmiş? Ve mevcut kodunuzda '(" "+ time) .toTime()' e kısayol olabilirsiniz. – Passerby
'Object.prototype', tüm nesnelerden devraldığı gibi kullanabilirsiniz. – TheBronx
Şahsen, prototipi genişletmek yerine değeri bir işleve iletmek için daha temiz bir yaklaşım olduğunu düşünüyorum. –