出于单元测试的目的,我需要覆盖Number.prototype.toLocaleString()
,以便始终使用en-US
而不是默认行为来调用它。我知道可以覆盖接收参数的普通内置函数,但是toLocaleString()
并没有将Number直接转换为字符串作为参数,因此我对此感到困惑。
我尝试了以下操作:
Number.prototype.toLocaleStringTest = Number.prototype.toLocaleString
Number.prototype.toLocaleString = function() { this.toLocaleStringTest('en-US') }
但是这个新的toLocaleString()
函数的结果始终是undefined
。顺便说一句,我确实通过在实现中添加临时console.log("I am called!")
来确保调用了新功能。
我在做什么错-还是我在试图实现一些不可行的事情?
答案 0 :(得分:7)
您非常亲密...仅缺少return
...:-)
Number.prototype.toLocaleStringTest = Number.prototype.toLocaleString
Number.prototype.toLocaleString = function() {
return this.toLocaleStringTest('en-US')
}
n = 123456.789;
console.log(n.toLocaleString());