Javascript 为什么不';t数字文字是否可以访问数字方法?

Javascript 为什么不';t数字文字是否可以访问数字方法?,javascript,Javascript,如果您查看ECMAScript 3规范,您将看到原语值类型Null和Undefined没有附带Null和Undefined对象 >> Null ReferenceError: Null is not defined 其他原语值类型Number、String和Boolean类型都有相应的Number、String和Boolean对象,您可以从全局范围引用这些对象 >>Number function Number() { [native code] } >>Bo

如果您查看ECMAScript 3规范,您将看到原语值类型Null和Undefined没有附带Null和Undefined对象

>> Null
ReferenceError: Null is not defined
其他原语值类型Number、String和Boolean类型都有相应的Number、String和Boolean对象,您可以从全局范围引用这些对象

>>Number
function Number() { [native code] }
>>Boolean
function Boolean() { [native code] }
这些基本值类型的目的是为其各自的基本值类型提供方法,如
toString
valueOf

>>var n = 1;
>>n.toString();
"1" 

>>var n = 1;
>>Number.prototype.toString.call(n);
"1"
布尔和字符串也是这样工作的:

>>var b = true;
>>b.toString(); 
"true"
>>Boolean.prototype.toString.call(b);
"true"
当您尝试混合类型时,可以看到基本值对象正在使用其伴随对象的方法:

>>Boolean.prototype.toString.call(n); 
TypeError: Boolean.prototype.toString is not generic
>>Number.prototype.toString.call(b)
TypeError: Number.prototype.toString is not generic
有趣的是,对于布尔和字符串文本类型,您可以直接从文本调用这些方法:

>>true.toString();
"true"
>>Boolean.prototype.toString.call(true)
"true"
>>"moo".toString();
"moo"
>>String.prototype.toString.call("moo")
"moo"
原语值null和undefined,因为它们没有伴随的null和undefined对象,所以不能执行以下操作:

>>Null
ReferenceError: Null is not defined
>>null.toString()
TypeError: Cannot call method 'toString' of null
基本值类型number的行为类似于两者的混合。如果直接使用数字的prototype对象的方法,则可以对文本调用
toString

>>Number.prototype.toString.call(1);
"1"
但您不能像使用字符串和布尔值那样从文本本身访问该方法:

>>1.toString()
SyntaxError: Unexpected token ILLEGAL
为什么即使有数字对象,数字文字的行为也不同于布尔值和字符串?

您可以用相同的方式访问它,这里的解析问题不同,要做到这一点,请使用稍微不同的语法:

(1).toString()
数字可以有小数,因此在解析代码时,以小数结尾的语法有点不明确,请使用括号。当您看到这也是有效的时,会更清楚一些:

(1.).toString()

但是,使用just
1.toString()
尝试将其解析为带小数点的数字,但失败了。

我想您会在另一个堆栈溢出问题中找到问题的答案。总结一下我们的答案:

[T] 他希望后面跟着一个数字 由点变为浮点 字面意义的。[…][Y]你只需要再加一个点就可以了[…]


Null(大写N)是一个变量名。保留字区分大小写。null是对象null。typeof null==“对象”//true

哇!我想这和十进制有关,但我想还有更多。很有趣,我很高兴我问了。没有考虑尝试。但愿我能把两个答案标记为答案。所以基本上,文字有这个属性,但是你只需要处理额外的十进制语法。谢谢1..toFixed(2),1.0.toFixed(2)在没有parens的情况下工作。@kennebec-是的,它们也会工作,我更想表达的是
(anyType)。toString()
将是一种一致的格式,可以工作,如果不完全清楚的话,很抱歉……这并不意味着具体的数字没有替代品。另请看,好的观点。我不确定。另一个帖子有很好的信息。谢谢
null.toString()
-->未捕获类型错误:无法读取null的属性“toString”