在JavaScript中,隐式数字到字符串的转换是如何工作的?

在JavaScript中,隐式数字到字符串的转换是如何工作的?,javascript,Javascript,我想通过改变数字的原型的到字符串功能来欺骗我的朋友,如下所示: Number.prototype.toString = function(){ return '0'; } 1 + '2' // '12', which should be '02' 因此,当我这样做时,它会起作用: 42..toString() // '0' 但当我进行隐式数字转换时,它不起作用,如下所示: Number.prototype.toString = function(){ return

我想通过改变
数字
原型
到字符串
功能来欺骗我的朋友,如下所示:

Number.prototype.toString = function(){
    return '0';
}
1 + '2'    // '12', which should be '02'
因此,当我这样做时,它会起作用:

42..toString()   // '0'
但当我进行隐式数字转换时,它不起作用,如下所示:

Number.prototype.toString = function(){
    return '0';
}
1 + '2'    // '12', which should be '02'

那么JavaScript隐式数字到字符串转换到底是如何工作的呢?我怎么才能这样欺骗我的朋友呢?(相信我,这并不像听起来那么邪恶)

任何连接到字符串的数字都将强制转换为字符串。要充分了解其工作原理,您应该阅读官方的ECMAScript文档。不确定您是否会影响原语转换。上面更改了数字对象将转换为的对象,例如,
newnumber(1)+“2”
@VLAZ使用
newnumber(2)
,它仍然不起作用:(我必须使用
.toString()
以查看预期结果。可能javascript根本没有使用
toString
函数来进行隐式字符串转换?@HaoWu哦,对-这是因为您需要覆盖
.valueOf
而不是
toString
来影响原语转换。
Number.prototype.valueOf=()=>'0'
将导致
新数字(1)+'2'
产生
'02'
@VLAZ它工作:)只希望它也能影响正常声明的数字和变量