重写Javascript';他在寻找数字
我正在重写javascript中数字的重写Javascript';他在寻找数字,javascript,overriding,tostring,Javascript,Overriding,Tostring,我正在重写javascript中数字的toString方法,因为我需要它为NaN值返回”,而不是默认的“NaN”: 然后我得到以下行为: (3).toString() => "3" Number.NaN.toString() => "" 没关系。问题是当我用以下方式将数字转换为字符串时: "" + 3 => "3" "" + Number.NaN => "NaN" # This is not what I expected
toString
方法,因为我需要它为NaN
值返回”
,而不是默认的“NaN”
:
然后我得到以下行为:
(3).toString() => "3"
Number.NaN.toString() => ""
没关系。问题是当我用以下方式将数字转换为字符串时:
"" + 3 => "3"
"" + Number.NaN => "NaN" # This is not what I expected
如您所见,在这种情况下,未使用重写的方法。有没有其他方法可以让它在这两种情况下都能正常工作?我还尝试重写了
Number.prototype.toLocaleString
,但没有成功。这里有一个JSFIDLE可以使用:问题是,Num.NAN
是一个静态变量(不是一个“数字”属于数字),这意味着您没有重写它的toString()方法。您可以尝试重写Number。NaN.toString
也。我认为可能隐式toString方法根本无法重写
即
NaN
属性是一个不可写常量->我认为这可能是因为3 instanceof Number==false
(另一方面new Number(3)instanceof Number==true
,但是typeof new Number(3)!==“Number”
)
"" + 3 => "3"
"" + Number.NaN => "NaN" # This is not what I expected
Number.prototype.toString = function() { return "hello world!" };
(3).toString() => "hello world!"
3 + "" => "3"