Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何覆盖(或覆盖?)内置Javascript函数_Javascript_Unit Testing - Fatal编程技术网

如何覆盖(或覆盖?)内置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注释中的建议是正确的。。。请参阅我的答案代码片段。。。