當前位置:編程學習大全網 - 編程語言 - web開發中怎樣檢測數組

web開發中怎樣檢測數組

這次給大家帶來web開發中怎樣檢測數組,web開發中檢測數組的註意事項有哪些,下面就是實戰案例,壹起來看壹下。

JS中最古老的跨域問題之壹就是在幀(frame)之間來回傳遞數組。開發者很快發現instanceof Array在此場景中不總是返回正確的結果。正如上文提到的,每個幀(frame)都有各自的Array構造函數,因此壹個幀(frame)中的實例在另外壹個幀裏不會被識別。Douglas Crockford首先推薦使用“鴨式辨型”接口(duck typing)“鴨式辨型”是由作家James Whitcomb Riley首先提出的概念,即“像鴨子壹樣走路、遊泳並且嘎嘎叫的鳥就是鴨子”,本質上是關註“對象能做什麽”,而不要關註“對象是什麽”。

// 采用鴨式辨型的方法檢測數組function isArray(value) { return typeof value.sort === "function";

}這種檢測方法依賴壹個事實,即數組是唯壹包含sort()方法的對象。當然,如果傳入isArray()的參數是壹個包含sort()方法的對象,它也會返回true。

關於如何在JS中檢測數組類型已經有很多研究了,最終,Juriy Zaytsev(也被稱作Kangax)給出了壹種優雅的解決方案。

function isArray(value) { return Object.prototype.toString.call(value) === "[object Array]";

}Kangax發現調用某個值的內置toString()方法在所有瀏覽器中都會返回標準的字符串結果。對於數組來說,返回的字符串為"[object Array]",也不用考慮數組實例是在哪個幀(frame)中被構造出來的。Kangax給出的解決方案很快流行起來,並被大多數JS類庫所采納。

這種方法在識別內置對象時往往十分有用,但對於自定義對象請不要用這種方法。比如,內置JSON對象使用這種方法將返回"[object JSON]"。

從那時起, ECMAScript5將Array.isArray()正式引入JS。唯壹的目的就是準確地檢測壹個值是否為數組。同Kangax的函數壹樣, Array.isArray()也可以檢測跨幀(frame)傳遞的值,因此很多JS類庫目前都類似地實現了這個方法。

相信看了本文案例妳已經掌握了方法,更多精彩請關註Gxl網其它相關文章!

推薦閱讀:

web開發中事件處理規則有哪些

為什麽web開發中需要避免使用全局變量

  • 上一篇:Javascript 中的類和對象
  • 下一篇:編程藝術mobi
  • copyright 2024編程學習大全網