5

現在 JavaScript で作業しているプロジェクトでは、10 進形式を使用しているため、文字列で時/分形式を使用するよりも計算が簡単です (カレンダー関連のプロジェクト)。ただし、ユーザーの画面に時間を表示するには、タイムコードを 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プロトタイプに追加できます。多くの人はプロトタイプを変更しないように警告しますが、これは多くの場合正当化されます。サードパーティのスクリプトがあなたのスクリプトと一緒に実行される可能性がある場合、プロトタイプを変更するのは危険です。

次に、モジュラスとフロアを使用して時間と分を計算することで、コードを少し単純化しました...

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 に答える