摘要:淺復(fù)制是說(shuō)只拷貝數(shù)組元素的內(nèi)容,而不管該內(nèi)容是不是指向另一個(gè)值。深復(fù)制與淺復(fù)制對(duì)應(yīng),它會(huì)不僅拷貝數(shù)組元素的內(nèi)容,還會(huì)分析其內(nèi)容是否為一個(gè)指針類(lèi)型的值,如對(duì)象,函數(shù),數(shù)組等。
1. Array.from( likeArrObj, [valueHandleFn], [thisObj] )
Array.from()用于將以下兩類(lèi)對(duì)象轉(zhuǎn)化為真正的數(shù)組:
類(lèi)似數(shù)組的對(duì)象(array-like object,即本身 具有l(wèi)ength屬性的對(duì)象 )
可遍歷對(duì)象( 原型鏈上具有[Symbol.iterator]方法的對(duì)象 ,即具有iterator接口的iterable對(duì)象)
它接受三個(gè)參數(shù):
likeArrObj: 需要被轉(zhuǎn)化的對(duì)象
[valueHandleFn]: 用于處理該對(duì)象中每個(gè)值的一個(gè) 遍歷函數(shù) ,類(lèi)似于map(),該參數(shù)可選。
[thisObj]: 用于 綁定[valueHandleFn]中的this ,也就是只有使用了[valueHandleFn],它才會(huì)有作用
它返回的是將該對(duì)象轉(zhuǎn)化成功后,得到的數(shù)組。
1.1 代碼示例let likeArrObj = { "0": 0, "1": 1, "2": 2, length: 3, } // ES5 的寫(xiě)法 (兩種) var arr_es5_01 = Array.prototype.slice.call( likeArrObj ) var arr_es5_02 = [].prototypr.slice.call( likeArrObj ) // ES6 的寫(xiě)法 (兩種) let arr_es6_01 = Array.from( likeArrObj ) let arr_es6_02 = [...likeArrObj]1.1.1 對(duì)代碼的說(shuō)明:
Array.prototype.slice( startNum, endNum ) 可以淺復(fù)制一部分array元素,起始于startNum,終止于(endNum - 1)。
淺復(fù)制 是說(shuō)只拷貝數(shù)組元素的內(nèi)容,而不管該內(nèi)容是不是指向另一個(gè)值。
通俗點(diǎn)講,就是只拷貝一層數(shù)據(jù)。
深復(fù)制 與淺復(fù)制對(duì)應(yīng),它會(huì)不僅拷貝數(shù)組元素的內(nèi)容,還會(huì)分析其內(nèi)容是否為一個(gè)“ 指針 ”類(lèi)型的值,如對(duì)象,函數(shù),數(shù)組等。如果是一個(gè)“ 指針 ”類(lèi)型的值,則會(huì)繼續(xù)將其值下的所有內(nèi)容統(tǒng)統(tǒng)復(fù)制一份.
內(nèi)容中的內(nèi)容全要復(fù)制,直到其內(nèi)容為 undefined 、 null 、 Boolean 、 Number 、 String 、 Symbol 的一種。
Function.prototype.call( thisObj, arg1, arg2, ..., argn ) 用于在運(yùn)行時(shí)指定該函數(shù)的this綁定對(duì)象
thisObj 是需要綁定的對(duì)象
arg1, arg2, ..., argn 是該函數(shù)調(diào)用的參數(shù)
Function.prototype.apply( thisObj, argArr ) 與該方法功能一致,只是在參數(shù)傳遞上,使用的是一個(gè)數(shù)組形式
[...likeArrObj]中的 ... 是擴(kuò)展運(yùn)算符,它通過(guò)調(diào)用likeArrObj的 [Symbol.iterator]方法 來(lái)將其打散成一個(gè)個(gè)獨(dú)立的量,最后再用 [] 來(lái)將其合成一個(gè)新的數(shù)組,所以使用該寫(xiě)法時(shí),一定需要確保likeArrObj具有 [Symbol.iterator]方法。
1.2 應(yīng)用場(chǎng)景它的常見(jiàn)應(yīng)用場(chǎng)景:
將 document.querySelectorAll( str ) 返回的NodeList集合轉(zhuǎn)化為真正的數(shù)組
將 arguments 對(duì)象轉(zhuǎn)化為真正的數(shù)組
轉(zhuǎn)化為真正的數(shù)組之后,就可以使用 Array.prototype.forEach() 方法來(lái)操作該對(duì)象了。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/91958.html
摘要:中對(duì)字符串函數(shù)對(duì)象數(shù)組等都進(jìn)行了擴(kuò)展,感覺(jué)目的呢就是完善一下所為外行人詬病的一些偽其實(shí)個(gè)人覺(jué)得不完美的才是真的美,什么東西都無(wú)懈可擊了就顯得不夠有趣了。 ES6中對(duì)字符串、函數(shù)、對(duì)象、數(shù)組等都進(jìn)行了擴(kuò)展,感覺(jué)目的呢就是完善一下JS所為外行人詬病的一些偽bug.其實(shí)個(gè)人覺(jué)得不完美的JS才是真的美,什么東西都無(wú)懈可擊了就顯得不夠有趣了。好了,接下來(lái)又要開(kāi)始拾人牙慧了... 主要講解: ...
摘要:擴(kuò)展運(yùn)算符簡(jiǎn)介擴(kuò)展運(yùn)算符是三個(gè)點(diǎn),可以將一個(gè)數(shù)組轉(zhuǎn)為用逗號(hào)分隔的參數(shù)序列。在實(shí)際項(xiàng)目中靈活應(yīng)用擴(kuò)展運(yùn)算符運(yùn)算符,能寫(xiě)出更精簡(jiǎn)易讀性高的代碼。 1、擴(kuò)展運(yùn)算符簡(jiǎn)介 擴(kuò)展運(yùn)算符( spread )是三個(gè)點(diǎn)(...),可以將一個(gè)數(shù)組轉(zhuǎn)為用逗號(hào)分隔的參數(shù)序列。 說(shuō)的通俗易懂點(diǎn),有點(diǎn)像化骨綿掌,把一個(gè)大元素給打散成一個(gè)個(gè)單獨(dú)的小元素。 showImg(https://segmentfault.c...
摘要:函數(shù)運(yùn)行后,返回一個(gè)遍歷器對(duì)象,因此也可以使用擴(kuò)展運(yùn)算符??偸欠祷貐?shù)值組成的數(shù)組。方法的回調(diào)函數(shù)可以接受三個(gè)參數(shù),依次為當(dāng)前的值當(dāng)前的位置和原數(shù)組。上面代碼中,的參數(shù)為,表示要拉平兩層的嵌套數(shù)組。 1.擴(kuò)展運(yùn)算符 含義擴(kuò)展運(yùn)算符(spread)是三個(gè)點(diǎn)(...)。它好比 rest 參數(shù)的逆運(yùn)算,將一個(gè)數(shù)組轉(zhuǎn)為用逗號(hào)分隔的參數(shù)序列。console.log(...[1, 2, 3])//...
摘要:它的參數(shù)是一個(gè)回調(diào)函數(shù),所有數(shù)組成員依次執(zhí)行該回調(diào)函數(shù),直到找出第一個(gè)返回值為的成員,然后返回該成員。上面代碼中,方法的回調(diào)函數(shù)可以接受三個(gè)參數(shù),依次為當(dāng)前的值當(dāng)前的位置和原數(shù)組。 數(shù)組的擴(kuò)展 展開(kāi)運(yùn)算符 展開(kāi)運(yùn)算符(用三個(gè)連續(xù)的點(diǎn) ( ... ) 表示)是 ES6 中的新概念,使你能夠?qū)⒆置媪繉?duì)象展開(kāi)為多個(gè)元素。 合并數(shù)組 展開(kāi)運(yùn)算符的一個(gè)用途是結(jié)合數(shù)組。 如果你需要結(jié)合多個(gè)數(shù)組,在...
摘要:最近在做的項(xiàng)目需要將升級(jí)到,使用過(guò)擴(kuò)展的同學(xué)應(yīng)該知道,的擴(kuò)展是完全不兼容的擴(kuò)展的,改如何使用呢。 最近在做的項(xiàng)目需要將PHP5.6升級(jí)到PHP7.0,使用過(guò)PHP-mongo擴(kuò)展的同學(xué)應(yīng)該知道,PHP7.0的mongodb擴(kuò)展是完全不兼容PHP5.6的mongo擴(kuò)展的,php-mongodb改如何使用呢。 下面直接說(shuō)明各種方法的使用: 1.mongodb連接: private func...
閱讀 1645·2021-11-19 11:38
閱讀 3635·2021-11-15 11:37
閱讀 873·2021-09-30 09:48
閱讀 1102·2021-09-29 09:46
閱讀 968·2021-09-23 11:22
閱讀 1950·2019-08-30 15:44
閱讀 3475·2019-08-26 13:58
閱讀 2438·2019-08-26 13:26