我正在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中使用。
答案 0 :(得分:7)
你可以这样做: -
(function() {
var _toString = Date.prototype.toString;
Date.prototype.toString = function(mask) {
if (mask == undefined) { return _toString.call(this); }
//snip
}
})();
答案 1 :(得分:1)
虽然上面的解决方案更优雅的是它不会污染Date.prototype,但由于它涉及的闭包,对“new”toString的调用将会变慢。
速度方面,你会比你在问题中提到的方式更好。尝试一个调用代码20,000次的循环,然后尝试安东尼提交的代码。
根据您的代码调用的频率,您可能希望采用这种方式。
干杯!
更新:你可以阅读这个小sample from Google