如何覆盖(或覆盖?)内置Javascript函数
出于单元测试的目的,我需要覆盖如何覆盖(或覆盖?)内置Javascript函数,javascript,unit-testing,Javascript,Unit Testing,出于单元测试的目的,我需要覆盖Number.prototype.toLocaleString(),以便始终使用en-US调用它,而不是使用默认行为。我理解覆盖一个接收参数的普通内置函数,但是toLocaleString()没有将要直接转换为字符串的数字作为参数,所以我在这里感到困惑 我尝试了以下方法: Number.prototype.toLocaleStringTest = Number.prototype.toLocaleString Number.prototype.toLocaleStr
Number.prototype.toLocaleString()
,以便始终使用en-US
调用它,而不是使用默认行为。我理解覆盖一个接收参数的普通内置函数,但是toLocaleString()
没有将要直接转换为字符串的数字作为参数,所以我在这里感到困惑
我尝试了以下方法:
Number.prototype.toLocaleStringTest = Number.prototype.toLocaleString
Number.prototype.toLocaleString = function() { this.toLocaleStringTest('en-US') }
但是这个新的toLocaleString()
函数的结果总是未定义的。当然会调用新函数,顺便说一下,我通过在实现中添加一个临时的console.log(“我被调用!”)
来确保这一点
我做错了什么?或者我试图实现一些不可行的事情吗?你很接近。。。只有一个返回值
丢失…:-)
Number.prototype.tolocalString测试=Number.prototype.tolocalString
Number.prototype.toLocalString=函数(){
返回此.tolocalStringTest('en-US'))
}
n=123456.789;
log(n.tolocalString())
function(){return this.toLocaleStringTest('en-US')}
有效吗?我认为@holydragon注释中的建议是正确的。。。请参阅我的答案代码片段。。。