覆盖 Date.prototype.xyz 函数
Override Date.prototype.xyz function
请不要将其标记为重复。我搜索了很多,这里没有这样的问题。有相似但不相同的
我尝试过,也四处寻找解决方案,但最后我想,我应该在这里问一下。
无参数
>
new Date().toLocaleString()
"6/30/2016, 11:33:19 PM"
带参数,"zh-Hans-CN"
可以取任意有效值,仅供提问。
>
new Date().toLocaleString("zh-Hans-CN")
"2016/6/30 下午11:33:48"
我实际上想改变这个函数的行为,它应该 return 像第二种情况一样输出,但没有任何输入参数。喜欢
>
new Date().toLocaleString()
"2016/6/30 下午11:33:48"
所以我的想法是,以某种方式覆盖该函数并使用参数从覆盖函数内部调用现有函数。
喜欢
Date.prototype.toLocaleString = function () {
return this.toLocalString("zh-Hans-CN");
}
但这是错误的,因为这个函数正在调用自身,导致无限递归套用这个错误。
Uncaught RangeError: Maximum call stack size exceeded(…)
这是一个例子,问题是我们如何使用相同的原型函数覆盖此功能。也许有一种方法可以先分离实际功能,然后再覆盖它。非常感谢您的帮助。
您可以使用匿名函数将 Date.prototype.toLocaleString
保存为参考,然后 return 一个 return 绑定到该函数上下文的 reference
函数。
Date.prototype.toLocaleString = (function (ref) {
return function(){
return ref.bind(this)('zh-Hans-CN');
}
})(Date.prototype.toLocaleString)
请不要将其标记为重复。我搜索了很多,这里没有这样的问题。有相似但不相同的
我尝试过,也四处寻找解决方案,但最后我想,我应该在这里问一下。
无参数
>
new Date().toLocaleString()"6/30/2016, 11:33:19 PM"
带参数,"zh-Hans-CN"
可以取任意有效值,仅供提问。
>
new Date().toLocaleString("zh-Hans-CN")"2016/6/30 下午11:33:48"
我实际上想改变这个函数的行为,它应该 return 像第二种情况一样输出,但没有任何输入参数。喜欢
>
new Date().toLocaleString()"2016/6/30 下午11:33:48"
所以我的想法是,以某种方式覆盖该函数并使用参数从覆盖函数内部调用现有函数。
喜欢
Date.prototype.toLocaleString = function () {
return this.toLocalString("zh-Hans-CN");
}
但这是错误的,因为这个函数正在调用自身,导致无限递归套用这个错误。
Uncaught RangeError: Maximum call stack size exceeded(…)
这是一个例子,问题是我们如何使用相同的原型函数覆盖此功能。也许有一种方法可以先分离实际功能,然后再覆盖它。非常感谢您的帮助。
您可以使用匿名函数将 Date.prototype.toLocaleString
保存为参考,然后 return 一个 return 绑定到该函数上下文的 reference
函数。
Date.prototype.toLocaleString = (function (ref) {
return function(){
return ref.bind(this)('zh-Hans-CN');
}
})(Date.prototype.toLocaleString)