Javascript 如何在不丢失原有方法的情况下替换方法?
我正在替换Javascript 如何在不丢失原有方法的情况下替换方法?,javascript,prototype,overriding,Javascript,Prototype,Overriding,我正在替换Date对象原型中的一个方法(覆盖、改进、添加功能)。以下是我所做工作的简化版本: Date.prototype._toString = Date.prototype.toString; Date.prototype.toString = function(mask) { if(mask == undefined){return this._toString();} //snip //... //snip return date_string;
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中。您可以这样做:-
(function() {
var _toString = Date.prototype.toString;
Date.prototype.toString = function(mask) {
if (mask == undefined) { return _toString.call(this); }
//snip
}
})();
虽然上述解决方案更为优雅,因为它不会污染Date.prototype,但对“new”toString的调用将因其涉及的关闭而减慢 就速度而言,你会比你在问题中提到的方式更好。尝试调用代码20000次的循环,然后尝试Anthony提交的代码 根据代码被调用的频率,您可能会选择一种或另一种方式 干杯 更新:你可以读这个小故事