我正在为 javascript 中的数字覆盖 toString
方法,因为我需要它为 NaN
值返回 ""
,而不是默认的 "NaN"
:
Number.prototype.original_toString = Number.prototype.toString;
Number.prototype.toString = function(radix) {
var originalValue = this.original_toString(radix);
if (originalValue == "NaN") {
return "";
} else {
return originalValue;
}
};
然后我得到以下行为:
(3).toString() => "3"
Number.NaN.toString() => ""
没关系。问题是当我通过以下方式将数字转换为字符串时:
"" + 3 => "3"
"" + Number.NaN => "NaN" # This is not what I expected
如您所见,在本例中未使用覆盖的方法。有没有其他方法可以使它在两种情况下都能正常工作?我也尝试覆盖 Number.prototype.toLocaleString
但没有成功。这是一个可以玩的 jsfiddle:http://jsfiddle.net/tmjf8cao/3/
最佳答案
问题是,Num.NAN
是一个静态变量(不是属于数字的“数字”),这意味着您还没有覆盖它的 toString() 方法。您也可以尝试覆盖 Number.NaN.toString
。
关于javascript - 为数字覆盖 Javascript 的 toString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28548165/