5

在我目前正在使用 JavaScript 进行的一个项目中,我使用的是十进制格式,因此它更容易计算,而不是在字符串中使用小时/分钟格式(日历相关项目)。但是,要在用户屏幕上显示时间,时间码必须显示为 hh:mm。

我认为为此使用 String 原型函数会很棒,因为它允许我使用如下代码:

var time = 8.75;
document.write("Meeting at "+time.toTime()); // writes: Meeting at 8:45

到目前为止,我几乎可以使用:

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;
}

但是,问题在于,这仅在变量time是字符串时才有效。否则它将给出未定义的错误。

有没有办法将原型应用于 JavaScript 中的不同对象,这样我就不必使用了time.toString().toTime()

谢谢!

4

2 回答 2

5

首先,您可以添加到Number原型中。许多人会警告不要修改原型,这在许多情况下是合理的。如果第 3 方脚本有可能与您的脚本一起运行,那么修改原型是很危险的。

其次,我稍微简化了你的代码,使用模数和下限来计算小时和分钟......

Number.prototype.toTime = function(){
  var hrs = Math.floor(this)
  var min = Math.round(this%1*60)
  min = min<10 ? "0"+min : min.toString();
  return hrs+":"+min;
}

var time = 8.25;
console.log("Meeting at "+time.toTime());
于 2013-02-20T11:42:34.773 回答
-1

您可以使用Object.prototype.toTime.

于 2013-02-20T11:41:52.013 回答