javascript - 为什么数组Array可以直接调用方法,而普通的Object对象却不行?
本文介绍了javascript - 为什么数组Array可以直接调用方法,而普通的Object对象却不行?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
比如我们可以这样数组排序:
[1,2,3].sort()
却不能这样调用对象的方法:
{}.toString()
还有,为什么字符串可以直接调用方法,Number类型、Boolean类型却不行。
字符串我了解一些,调用字符串方法的时候会生成一个临时的String对象,Number、Boolean类型为啥不行?
解决方案
这不和eval()
解析'{}'
道理一样,js解析代码会优先把{
看成和function{}
的大括号一样,会分开解析先解析{
(开始),在解析}
(结束)。这样的话当然会报错了。
而eval()
解析'{}'
时是怎么办的,加个括号'({})'
;这样就会把{}
看成一个整体来解析,这时候它就是对象了。
至于为什么字符串可以直接调用方法,Number类型、Boolean类型却不行
Boolean类型可以呀,
至于数字不能直接调用方法,那也是js解析的原因,比如
8.toString()//报错
(8).toString()// 正确
8.0.toString()// 正确
那为什么呢,因为js中不存在真正的整数,整数都是用浮点数表示的,所以当js解析8
是发现后面还有.
于是会把8.
看成一个数,这样的话没加.
的toString
当然错了。
所以如果写成下面这样也可以
8..toString()// 正确
这篇关于javascript - 为什么数组Array可以直接调用方法,而普通的Object对象却不行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文