请不要将其标记为重复。我搜索了很多,这里没有这样的问题。有类似但不一样的。
我试过并且还四处寻找解决方案,但最后我想,我应该在这里问。
没有参数
>
new Date()。toLocaleString()“2016年6月30日,晚上11:33:19”
使用参数,"zh-Hans-CN"
可以有任何有效值,只是为了提问。
>
new Date()。toLocaleString(“zh-Hans-CN”)“2016/6/30下午11:33:48”
我实际上想要改变这个函数的行为,它应该像第二种情况一样返回输出但没有任何输入参数。像
>
new Date()。toLocaleString()“2016/6/30下午11:33:48”
所以这个想法是,以某种方式覆盖该函数并使用param从内部覆盖函数调用现有函数。
像
Date.prototype.toLocaleString = function () {
return this.toLocalString("zh-Hans-CN");
}
但这是错误的,因为这个函数正在调用自身,导致无限的重复发生此错误。
未捕获RangeError:超出最大调用堆栈大小(...)
所以这是一个例子,问题是我们如何使用相同的原型函数覆盖此功能。也许有一种方法可以先分离实际函数然后覆盖它。非常感谢您的帮助。
答案 0 :(得分:1)
您可以使用匿名函数将Date.prototype.toLocaleString
保存为引用,然后返回一个函数,该函数返回与该函数上下文绑定的reference
。
Date.prototype.toLocaleString = (function (ref) {
return function(){
return ref.bind(this)('zh-Hans-CN');
}
})(Date.prototype.toLocaleString)