为什么js中,数字直接量不能直接调用其包装类的方法,而字符串直接量可以调用其包装类的方法?

比如,
'sdfjskdfs'.substring()
这样就可以直接调用成功
而数字也属于原始类型,为什么数字就必须先赋值给一个变量,才可以使用呢?
3.toString() // 报错

var a = 3;
a.toString() // '3'

阅读 4k
4 个回答

并不是因为数字不能直接调用toString... 是它不知道你写的那个点是小数点还是要调用方法... 你用这两个调用下试试

1.0.toString()

1['toString']()

3. 会被认成一个数。

可以这样写(3).toString()

在原型链上能找到的方法都可以调用的。

3.toString()会报错是因有歧义;
3..toString()就正常了

clipboard.png

3.toString() 中的 . 被当成了JS 解析器当成了小数点。

(3).toString()就没这个问题,这里的 . 被解释为对象成员操作符

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题