[英]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.