2

Dateオブジェクトのプロトタイプのメソッドを置き換えます (オーバーライド、改善、機能を追加します) 。これが私がやったことの単純化されたバージョンです:

Date.prototype._toString = Date.prototype.toString;

Date.prototype.toString = function(mask) {
    if(mask == undefined){return this._toString();}
    //snip
    //...
    //snip
    return date_string;
}

標準メソッドを失いたくないので、元のメソッドを一時変数に割り当て、必要に応じて呼び出しています。

Date.prototype名前空間を汚染せずにこれを行う方法はありますか?

私が求めているのは、これと同じ質問ですが、Javascript のみです。

4

2 に答える 2

7

あなたはこのようにそれを行うことができます:-

(function() {
    var _toString = Date.prototype.toString;
    Date.prototype.toString = function(mask) {
       if (mask == undefined) { return _toString.call(this); }
    //snip
    }
 })();
于 2009-06-29T15:51:55.167 に答える
1

上記のソリューションは、Date.prototype を汚染しないという点でより洗練されていますが、「新しい」toString の呼び出しは、関連するクロージャーのために遅くなります。

速度に関しては、質問で述べた方法の方が良いでしょう。コードを 20,000 回呼び出すループを試してから、Anthony から提出されたコードを試してください。

コードが呼び出される頻度に応じて、いずれかの方法を使用する必要があります。

乾杯!

更新: Google からこの小さなサンプルを読むことができます

于 2009-06-29T19:04:55.660 に答える