javascript - 为数字覆盖 Javascript 的 toString

标签 javascript overriding tostring

我正在为 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/

相关文章:

javascript - URL参数决定load() url

javascript - 从 rest api 调用数据并解析到 ui 中的表中

apache-flex - Flex 组件生命周期 : validateNow, validateDisplayList、invalidateDisplalList、commitProperties 等

c# - TimeSpan.ToString() 上的 System.FormatException

javascript - requireJS : Best way to add jQuery plugins?

javascript - Chrome 中与 Windows 缩放相关的拖放问题 (125%)

java - 重写方法而不扩展 (java)

java - docs.oracle.com 上有关覆盖和隐藏方法的文本是否含糊不清?

java - 如何将 String 转换为 int?

java - toString 方法用 2D boolean 数组打印游戏板