摘要:將對象轉換為數組對象的限制不知道現在還是否需要考慮這一點之前的版本將實現為對象而非對象,對象不能直接調用方法,因此需要采取其他方式轉化。
關于類數組對象
JavaScript中有一些著名的類數組對象,它們看起來很像數組:
擁有length屬性
元素按序保存在對象中,可以通過索引訪問
但實際和數組又不是一回事:
沒有數組的很多方法
也會有數組沒有的方法
(e.g. NodeList的item()方法)
有些類數組對象是動態變化的
(e.g. NodeList的值是基于DOM結構動態執行查詢的結果)
……
將類數組對象轉換為數組對象Array.prototype.slice.call(arraylike, 0);
這是一個遍地開花的方法,這里主要是想簡單理解一下實現原理。
Array的通用方法Array對象的很多方法都是通用方法,意思是其它非數組對象也可以直接借來使用,因為它們在設計時沒有要求使用方法的對象必須是數組。
Array.prototype.slice()就是這樣一個方法,只要對象有length屬性并可以通過索引訪問,就可以使用該方法。
當僅傳入一個參數,且傳入參數為空或0時,從索引為0的元素開始復制,直到最后一個元素,結果被保存在一個數組中返回。
Function.call()方法這個方法使得你可以在一個對象上借用另一個對象的方法。
第一個參數即為實際調用方法的對象,其后的參數為依次傳入方法的參數。
將NodeList對象轉換為數組對象的限制不知道現在還是否需要考慮這一點?
IE8之前的版本將NodeList實現為COM對象而非DOM對象,COM對象不能直接調用js方法,因此需要采取其他方式轉化。
/* JavaScript高級程序設計-第十章 P250 */ function convertToArray(nodes) { var array = null; try { array = Array.prototype.slice.call(nodes, 0); } catch(ex) { array = new Array(); for(var i=0; i
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/79825.html
摘要:通過上面的圖我想應該一目了然了,基本數據類型都是存在棧內存中的,復雜對象則是存在堆內存中,棧內存變量保存的是其內存地址。等同于如果使用則規則相對簡單值為基本數據類型數值轉為相應的字符串。 數據類型是基礎中的基礎,大家天天遇到,我們這次來討論深一點,將我們認為理所當然的事情背后的原理發掘;繼承也是前端基礎一個大考點,看看繼承的原理與使用場景。 本文討論以下幾個點: JavaScript...
摘要:使用新的易用的類定義,歸根結底也是要創建構造函數和修改原型。首先,它把構造函數當成單獨的函數且包含類屬性集。該節點還儲存了指向父類的指針引用,該父類也并儲存了構造函數,屬性集和及父類引用,依次類推。 原文請查閱這里,略有刪減,本文采用知識共享署名 4.0 國際許可協議共享,BY Troland。 本系列持續更新中,Github 地址請查閱這里。 這是 JavaScript 工作原理的第...
摘要:使用新的易用的類定義,歸根結底也是要創建構造函數和修改原型。首先,它把構造函數當成單獨的函數且包含類屬性集。該節點還儲存了指向父類的指針引用,該父類也并儲存了構造函數,屬性集和及父類引用,依次類推。 原文請查閱這里,略有刪減,本文采用知識共享署名 4.0 國際許可協議共享,BY Troland。 本系列持續更新中,Github 地址請查閱這里。 這是 JavaScript 工作原理的第...
摘要:不允許隱式轉換的是強類型,允許隱式轉換的是弱類型。拿一段代碼舉例在使用調用函數的時候會先生成一個類模板運行時生成,執行的時候會生成類模板,執行的時候會生成類模板。 0 x 01 引言 今天和一個朋友討論 C++ 是強類型還是弱類型的時候,他告訴我 C++ 是強類型的,他和我說因為 C++ 在寫的時候需要 int,float 等等關鍵字去定義變量,因此 C++ 是強類型的,我告訴他 C+...
摘要:創建數組中創建數組的方式數組字面量一個數組。傳入一個回調函數,找到數組中符合當前搜索規則的第一個元素,返回它,并且終止搜索。用新元素替換掉數組內的元素,可以指定替換下標范圍。 ES5提供的數組已經很強大,但是ES6中繼續改進了一些,主要是增加了新的數組方法,所以這章的知識非常少。 創建數組 ES5中創建數組的方式:數組字面量、new一個數組。 const arr1 = [] //數組字...
閱讀 2193·2021-11-18 10:02
閱讀 3295·2021-11-11 16:55
閱讀 2698·2021-09-14 18:02
閱讀 2432·2021-09-04 16:41
閱讀 2064·2021-09-04 16:40
閱讀 1184·2019-08-30 15:56
閱讀 2219·2019-08-30 15:54
閱讀 3166·2019-08-30 14:15