如何更换不失原有的方法?
-
21-08-2019 - |
题
我更换(替换,改进,增加功能)在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的方式,则对“新”的toString因为关闭它涉及将放缓。
据速度方面,你会离开你在你的问题中提到的方式更好。尝试循环调用代码20000次,然后尝试提交安东尼的代码。
根据你的代码是如何经常被称为,你会想要去的一种方式或其他。
干杯!
更新:你可以看到这个小
不隶属于 StackOverflow