繁体   English   中英

如何覆盖(或覆盖?)内置的Javascript函数

[英]How do I override (or overwrite?) a built-in Javascript function

为了进行单元测试,我需要覆盖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!")来确保这一点。

我做错了什么 - 或者我是否想要实现一些不可行的东西?

你非常接近......只有一次return ...... :-)

 Number.prototype.toLocaleStringTest = Number.prototype.toLocaleString Number.prototype.toLocaleString = function() { return this.toLocaleStringTest('en-US') } n = 123456.789; console.log(n.toLocaleString()); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM