2009-06-29 10 views
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名前空間を汚染することなくこれを行う方法はありますか?

私が求めているのはthis same questionです(Javascriptのみ)。あなたはこのようにそれを行うことができます

答えて

7

: - 上記のソリューションは、よりエレガントですが

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

は「新」のtoStringへの呼び出しが遅くなるだろう、それはDate.prototypeを汚染しないような方法でありますそれが含まれている閉鎖のためにダウン。

スピードの点では、あなたの質問で言及した方が良いでしょう。あなたのコードを20,000回呼び出すループを試してからAnthonyが提出したコードを試してみてください。

あなたのコードが呼び出される頻度に応じて、一方的にやりたいことがあります。

乾杯!

更新:これは少し読むことができますsample from Google

関連する問題