为什么没有将数字对象转换为字符串?毕竟,我在原型中定义了方法toString:
Number.prototype.toString = function() {
return "wrwer";
}
var a = 5;
console.log(a + '');
为什么没有将数字对象转换为字符串?毕竟,我在原型中定义了方法toString:
Number.prototype.toString = function() {
return "wrwer";
}
var a = 5;
console.log(a + '');
您已覆盖该方法,并手动调用它会产生所需的结果:
但是,当使用加法运算符时,
toString不会调用该方法。这个运算符的工作原理可以在 ECMAScript 规范中找到。
特别是,由于其中一个操作数 (
'') 是字符串,因此第二个 (a) 也被强制转换为字符串。但这是使用抽象操作 ToString完成的,它与 numbers 相关,根据规范中描述的算法形成一个字符串,而无需调用toString.该方法的标准实现
Number.prototype.toString在内部使用ToStringif 作为数字系统的基础 in 被toString传递10(或什么都不传递 -10这是默认值)。否则(当基于2to9和 from11to 时36),算法是特定于浏览器的,但不太可能与标准有很大不同。