如何在不丢失原件的情况下更换方法?

Est*_*ber 2 javascript overriding prototype

我正在替换(覆盖,改进,添加功能)Date对象原型中的方法.这是我所做的简化版本:

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

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

因为我不想丢失标准方法,所以我将原始方法分配给时间变量并在适当时调用它.

有没有办法在不污染Date.prototype命名空间的情况下这样做?

我问的是同样的问题,只有在Javascript中.

Ant*_*nes 7

你可以这样做: -

(function() {
    var _toString = Date.prototype.toString;
    Date.prototype.toString = function(mask) {
       if (mask == undefined) { return _toString.call(this); }
    //snip
    }
 })();
Run Code Online (Sandbox Code Playgroud)