亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

javascript類數(shù)組的深入理解

 更新時間:2021年03月09日 14:15:31   作者:ら淡然如雪  
這篇文章主要給大家介紹了關于javascript類數(shù)組的深入理解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

js數(shù)組,相比大家都很熟悉,因為走到哪都要用,但它有個“雙胞胎弟弟” ,叫類數(shù)組(也叫偽數(shù)組),可能有的人了解,有的人不了解,今天我們來看一看。

什么是類數(shù)組

顧名思義,這玩意兒肯定是個長得像數(shù)組,但又不算數(shù)組的東西。那到底是個啥,其實它就是一個對象,一個長的像數(shù)組的對象。

和數(shù)組的區(qū)別

那類數(shù)組和數(shù)組有啥區(qū)別:
1、都有l(wèi)ength屬性
2、類數(shù)組也可以for循環(huán)遍歷,有的類數(shù)組還可以通過 for of 遍歷
3、類數(shù)組不具備數(shù)組的原型方法,因此類數(shù)組不可調(diào)用相關數(shù)組方法(如,push,slicec,concat等等)

都有哪些類數(shù)組

常見的類數(shù)組有

  • 函數(shù)的參數(shù)arguments
  • 通過getElementsByTagName,getElementsByClassName,getElementsByName等方法獲取的dom列表(也叫 HTMLCollection)
  • 通過querySelectorAll()方法獲取的NodeList節(jié)點列表

下面,我們來分別看一下這3類 類數(shù)組

arguments

arguments是javascript的一個關鍵字。專指函數(shù)的參數(shù)集合,它包含了函數(shù)的所有參數(shù)以及其他屬性。它無需定義,可直接在函數(shù)體內(nèi)使用

function args(a, b, c) {
	console.log(arguments)
	console.log(typeof arguments)
	console.log({}.toString.call(arguments))
}

args('a', 'b', 'c')

我們看看輸出結(jié)果

可以看出,arguments包含所有參數(shù),并且存在length屬性,同時可以看出,他的類型是object,并且轉(zhuǎn)換為string后 是 object Arguments,代表是Arguments對象。同時,可以看到,他還有一個屬性callee,而這個屬性的值好像就是我們定義的這個函數(shù)體,那么我們輸出看一下

function args(a, b, c) {
	console.log(arguments.callee)
}

args('a', 'b', 'c')

可以看到,輸出的確實是我們函數(shù)自己。那既然表示的自己,請不要隨便去調(diào)用這個屬性,因為一旦調(diào)用,會不斷的調(diào)用自己,進入死循環(huán),直到棧溢出。就像下面這樣

function args (a, b, c) {
 console.log(123)
 arguments.callee()
}

args('a', 'b', 'c')

dom列表(HTMLCollection)

這一類是指通過getElementsByTagName或者 getElementsByClassName 或者 getElementsByName獲取到的dom列表的集合。

<div>今天天氣不太好</div>
<div>因為下雨了</div>
<script>
 var domList = document.getElementsByTagName('div')
 console.log(domList)
 console.log(typeof domList)
 console.log({}.toString.call(domList))
</script>

可以看出,domList也存在length屬性。并且,轉(zhuǎn)換為string后是 object HTMLCollection。代表是HTMLCollection對象

節(jié)點列表(NodeList)

通過document.querySelectorAll()所獲取的節(jié)點的集合

<div class="abc">今天天氣不太好</div>
<div class="abc">因為下雨了</div>
<script>
 var nodeList = document.querySelectorAll('div')
 console.log(nodeList)
 console.log(typeof nodeList)
 console.log({}.toString.call(nodeList))
</script>

可以看出,nodeList同樣存在length屬性,且轉(zhuǎn)換成string后是 object NodeList,代表是NodeList對象。該對象是一個符合Iterator接口規(guī)范的對象,故它可以被for…of遍歷(什么是Iterator我就不在這里講述了,大家可以自己去看 什么是Iterator

特點

類數(shù)組都不存在數(shù)組的原型方法,但當類數(shù)組需要調(diào)用數(shù)組方法去做任何事情時,可以通過以下方式

  • 利用call,apply進行方法借用,借用數(shù)組的各自方法
  • 將類數(shù)組轉(zhuǎn)換為數(shù)組。然后再調(diào)用數(shù)組方法

call,apply進行方法借用

其實我們上面也已經(jīng)用過這個方法了,類數(shù)組轉(zhuǎn)為字符串時,我們上面是不是借用了對象的toString()方法啊

下面我們再多列幾個

function args(a, b, c) {
 Array.prototype.push.call(arguments, '123')
 console.log(arguments)
 Array.prototype.splice.call(arguments, 0, 1)
 console.log(arguments)
 Array.prototype.unshift.apply(arguments, [1,2,3])
 console.log(arguments)
}

args('a', 'b', 'c')

類數(shù)組轉(zhuǎn)數(shù)組

將類數(shù)組轉(zhuǎn)成數(shù)組后,就可以隨意調(diào)用各自數(shù)組方法,那么類數(shù)組如何轉(zhuǎn)成數(shù)組呢!

可借用數(shù)組的一些方法生成一個新數(shù)組

function args(a, b, c) {
 let arr = Array.prototype.slice.call(arguments)
 console.log(arr)
 arr = Array.prototype.concat.apply([], arguments)
 console.log(arr)
}

args('a', 'b', 'c')

利用ES6新增方法轉(zhuǎn)換為數(shù)組

ES6新增了一個Array.from方法,可將類數(shù)組轉(zhuǎn)為數(shù)組。還提供了展開運算符,可以直接在一個數(shù)組中展開類數(shù)組

function args(a, b, c) {
 let arr = Array.from(arguments)
 console.log(arr)
 arr = [...arguments]
 console.log(arr)
}

args('a', 'b', 'c')

好了,類數(shù)組就寫到這了,歡迎一起探討

總結(jié)

到此這篇關于javascript類數(shù)組的文章就介紹到這了,更多相關javascript類數(shù)組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • js實現(xiàn)文字跟隨鼠標移動而移動的方法

    js實現(xiàn)文字跟隨鼠標移動而移動的方法

    這篇文章主要介紹了js實現(xiàn)文字跟隨鼠標移動而移動的方法,實例分析了javascript處理鼠標事件及文字特效的技巧,需要的朋友可以參考下
    2015-02-02
  • Electron 打包問題:electron-builder 下載各種依賴出錯(推薦)

    Electron 打包問題:electron-builder 下載各種依賴出錯(推薦)

    這篇文章主要介紹了Electron 打包問題:electron-builder 下載各種依賴出錯,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • JS簡單實現(xiàn)浮動窗口效果示例

    JS簡單實現(xiàn)浮動窗口效果示例

    這篇文章主要介紹了JS簡單實現(xiàn)浮動窗口效果,涉及javascript操作浮動窗口的創(chuàng)建、打開、關閉等相關操作技巧,需要的朋友可以參考下
    2016-09-09
  • JavaScript實現(xiàn)簡單計算器小功能

    JavaScript實現(xiàn)簡單計算器小功能

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)簡單計算器小功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • javaScript生成支持中文帶logo的二維碼(jquery.qrcode.js)

    javaScript生成支持中文帶logo的二維碼(jquery.qrcode.js)

    這篇文章主要介紹了javaScript生成二維碼,改造jquery.qrcode.js,使之支持中文,能帶logo的二維碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Javascript編寫2048小游戲

    Javascript編寫2048小游戲

    本文給大家介紹的是去年很火的一款小游戲--2048用javascript實現(xiàn)的思路以及代碼,有需要的小伙伴可以參考下。
    2015-07-07
  • JavaScript字典與集合詳解

    JavaScript字典與集合詳解

    這篇文章主要介紹了JavaScript字典與集合詳解,集合是由一組無序且不重復的元素構(gòu)成。我們可以將集合看成一種特殊的數(shù)組,它的特殊之處就是無序且不重復,這也就意味著我們不能通過下標的方式進行訪問,而且集合中不會出現(xiàn)重復的元素
    2022-07-07
  • js 動態(tài)加載事件的幾種方法總結(jié)

    js 動態(tài)加載事件的幾種方法總結(jié)

    本篇文章主要是對js 動態(tài)加載事件的幾種方法進行了詳細的總結(jié)介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-12-12
  • js實現(xiàn)的四級左側(cè)網(wǎng)站分類菜單實例

    js實現(xiàn)的四級左側(cè)網(wǎng)站分類菜單實例

    這篇文章主要介紹了js實現(xiàn)的四級左側(cè)網(wǎng)站分類菜單,實例分析了javascript操作頁面元素實現(xiàn)tab切換的相關技巧,需要的朋友可以參考下
    2015-05-05
  • JavaScript 組件之旅(四):測試 JavaScript 組件

    JavaScript 組件之旅(四):測試 JavaScript 組件

    本期,我們要討論的話題是 JavaScript 的測試,以檢查組件的狀態(tài)和工作方式是否符合預期,還會介紹一個可以方便編寫測試用例的測試方法。這里說的測試當然是使用自動化的測試手段,這是軟件質(zhì)量保證(QA)的重要環(huán)節(jié)。
    2009-10-10

最新評論