亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

javascript - 為什么數組Array可以直接調用方法,而普通的Object對象卻不行?

瀏覽:95日期:2023-02-15 17:11:43

問題描述

比如我們可以這樣數組排序:

[1,2,3].sort()

卻不能這樣調用對象的方法:

{}.toString()

還有,為什么字符串可以直接調用方法,Number類型、Boolean類型卻不行。

字符串我了解一些,調用字符串方法的時候會生成一個臨時的String對象,Number、Boolean類型為啥不行?

問題解答

回答1:

這不和eval()解析’{}’道理一樣,js解析代碼會優先把{看成和function{}的大括號一樣,會分開解析先解析{(開始),在解析}(結束)。這樣的話當然會報錯了。而eval()解析’{}’時是怎么辦的,加個括號’({})’;這樣就會把{}看成一個整體來解析,這時候它就是對象了。至于“為什么字符串可以直接調用方法,Number類型、Boolean類型卻不行”Boolean類型可以呀,至于數字不能直接調用方法,那也是js解析的原因,比如

8.toString()//報錯(8).toString()// 正確8.0.toString()// 正確

那為什么呢,因為js中不存在真正的整數,整數都是用浮點數表示的,所以當js解析8是發現后面還有.于是會把8.看成一個數,這樣的話沒加.的toString當然錯了。所以如果寫成下面這樣也可以

8..toString()// 正確回答2:

首先你的想法是錯誤的.普通的 Object 對象是可以調用方法的.如

var o = {};o.toString(); // OK

但是{}.toString()卻是出現語法錯誤,因為{}.toString()中的{}將會被看成一個語句塊,而不是對象直接量.因為 JavaScript 將從左到右解析{}.toString(),當遇到{時,它將會看做一個語句塊的開始,之后遇到},語句塊結束,在遇到.將會發生語法錯誤.

而如果使用({}).toString()將可以正常工作.(注意包圍在{}兩邊的括號).因為當解析({}).toString()時,首先遇到(,則將括號里面的部分看做表達式,得到一個空對象,因此對這個空對象執行方法調用是合法的.

回答3:

關于 {}.toString() 這個問題,有人已經講得非常清楚了。是因為 js 引擎在解析時,會把{}當成塊標記。不過我表示也很奇怪,樓主說的問題,我在mac上試了幾個瀏覽器都沒有問題。

我想補充的是樓主的第二個問題,為什么字符串可以直接調用方法,Number類型、Boolean類型卻不行。 我想,你應該是哪里搞錯了。

var num = 1.2333;var flag = true; console.log({}.toString()) //[object, object]console.log(num.toFixed(2)); //1.23console.log(flag.toString()); //’true’ 這里是字符串

這里,num是個數值字面量,flag是個布爾值,它們倆都可以調用方法。樓主對字符串了解一些,那應該明白,基本類型的數據本來就沒有屬性和方法的,只有對象才擁有。

但是為什么我們又可以像調用對象的方法一樣來調用基本數據類型的方法呢?(如: ’a bc’.trim())

是因為,基本數據類型的值在調用方法時,js 會將其轉為一個臨時包裝對象。字符串直接量就可以像字符串對象(new String(’abc’))一樣調用屬性和方法,數值字面量就可以像數值對象一樣調用屬性和方法。

當然,這個臨時包裝對象只在代碼執行的這一瞬間存在。方法執行完畢,這個臨時對象就立即銷毀。

所以樓主說的,Number, Boolean類型的值不可以調用方法是不可能的。

標簽: JavaScript
主站蜘蛛池模板: 777免费视频 | 日本无翼乌邪恶彩色大全 | 欧美一区二区三区久久久 | 黑人网址 | 狠狠色噜噜狠狠狠狠97不卡 | 啪啪网视频 | 和日本免费不卡在线v | 国产精品一区二区三区高清在线 | 就要干就要操 | 91久久香蕉国产线看观看软件 | 亚洲欧美国产一区二区三区 | 黄色免费网址在线观看 | 久草在线精品视频 | 日本大片在线观看 | 久热香蕉视频 | 国产一区二区视频在线 | 久操影视 | 一级人做人a爰免费视频 | 国产一级片在线 | 国产精品综合色区在线观看 | 日本黄色一级毛片 | 国产www| 国内欧美一区二区三区 | 欧美精品在线视频 | 欧美日韩中文在线视频 | 亚洲性大片 | 亚洲青青青网伊人精品 | 成人一区二区丝袜美腿 | 一 级 黄 色蝶 片 | 手机看片国产免费现在观看 | 99久久免费精品高清特色大片 | 精品成人免费一区二区在线播放 | 成 人国产在线观看高清不卡 | 伊人色婷婷综在合线亚洲 | 91情侣在线偷精品国产 | 婷婷六月综合 | 国产免费久久精品 | 亚洲国产成人久久笫一页 | 免费网站成人亚洲 | 久久国产这里只有精品 | 亚洲欧美一二三区 |