如何將偽數組轉換成真正的數組


1.常見的偽數組有哪些?

arguments、通過document.getElements..獲取到的內容

 

2.偽數組有什么特點?

具有length屬性,也是一個一個的元素組成的,但是構造器不是Array,不能使用數組的方法

 

3.轉換為真正的數組的方法:

通過遍歷將偽數組里元素放入到一個新的數組里

通過call改變數組slice方法里的this指向

 

因為我想要讓偽數組也能使用數組的方法,為什么偽數組就不能使用數組方法,為什么數組就能使用push方法

一個數組都是由她的構造器實例化出來的,var a = [];這是js的語法糖;正規的用法:var a = new Array()

 

因為Array是一個構造函數,每一個構造函數都有原型,且構造函數構造出來的實例可以使用原型上的方法,也就是說因為Array的原型上有一些方法,所以每一個數組都可以使用push等方法

因為偽數組的構造器不是Array,當然不能使用Array原型上的push方法

 

現在數組有一個方法slice,這個方法每次都會返回一個新數組,如果不傳參的話,返回的新數組的元素和原數組的元素是一模一樣的

如果偽元素也能執行這個方法的話,那么是不是就返回一個真正的數組,並且元素一樣,但是不能直接執行

所以我們使用偷梁換柱的方法,讓一個真正的數組,或者直接從Array.prototype上執行slice方法,但是在執行的時候通過call來將里面的this換成偽數組,這樣的話,就會返回一個元素和偽數組元素一樣的真正數組了

let arr = [].slice.call(arg) //Array.prototype.slice.call(arg)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM