为了账号安全,请及时绑定邮箱和手机立即绑定

为什么数组Array可以直接调用方法,而普通的Object对象却不行?

为什么数组Array可以直接调用方法,而普通的Object对象却不行?

繁花不似锦 2018-11-21 18:14:38
比如我们可以这样数组排序:[1,2,3].sort()却不能这样调用对象的方法:{}.toString()还有,为什么字符串可以直接调用方法,Number类型、Boolean类型却不行。字符串我了解一些,调用字符串方法的时候会生成一个临时的String对象,Number、Boolean类型为啥不行?
查看完整描述

1 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

这不和eval()解析'{}'道理一样,js解析代码会优先把{看成和function{}的大括号一样,会分开解析先解析{(开始),在解析}(结束)。这样的话当然会报错了。
eval()解析'{}'时是怎么办的,加个括号'({})';这样就会把{}看成一个整体来解析,这时候它就是对象了。
至于“为什么字符串可以直接调用方法,Number类型、Boolean类型却不行”
Boolean类型可以呀,
至于数字不能直接调用方法,那也是js解析的原因,比如

8.toString()//报错

(8).toString()// 正确

8.0.toString()// 正确

那为什么呢,因为js中不存在真正的整数,整数都是用浮点数表示的,所以当js解析8是发现后面还有.于是会把8.看成一个数,这样的话没加.toString当然错了。
所以如果写成下面这样也可以

8..toString()// 正确

查看完整回答
反对 回复 2018-12-17
  • 1 回答
  • 0 关注
  • 397 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信