平常開發過程當中,發現本身對不少原生方法都不知道,有些早已實現的方法,卻傻乎乎本身去實現,所以萌生了總結和練習JS內置對象方法的想法。
如下內容可能並不有趣,請謹慎觀看?,參考自MDNes6
Array.length
這個你們都再熟悉不過啦,表示數組長度~數組
Array.prototype
數組對象的原型~數據結構
Array.prototype.copyWithin(target,start,end)
該方法解釋起來彷佛不太好描述,簡單來講,copyWithin用於把從目標數組Array拷貝一部分出來,並把這一 部分放入target
指向的位置(target,start,end
都爲整數),並且不會改變數組長度!!!也就是說,若是拷貝的那部分放入新數組時,若是長度超出原數組長度,那麼多餘長度的那部分會被忽略,不會繼續加入到新數組中
。
示例代碼:
函數
代碼中有一段註釋,也是比較關鍵的一點,該函數作的操做是把拷貝出來的數據替換掉target所指位置的原來的元素,注意,是替換
,原來target所在位置的元素在新數組中再也不存在!!this
Array.prototype.concat()
該方法用於鏈接多個數組或者非數組值,而且返回一個新數組。
具體看示例:
spa
該方法的參數有一點須要解釋,傳入的多個參數中,若是是數組類型,則將它的元素複製一份並push到新數組中,如果其餘類型,則直接看成元素push到新數組中。重點:concat的運算過程是從新複製一分內容傳入新數組,所以新數組和舊數組的內存地址是不一樣的,對新數組作的改變並不會影響到原來的數組,可是!注意這個可是!我說三遍可是!這條原則是基於全部數組元素都是基本類型,若是說某一個元素是引用類型,那麼concat所複製的也只不過是這個引用類型的一個引用,指向的是同一個內存地址!總結:新數組的內存地址和舊數組不同,可是新數組內引用類型元素和舊數組內相對的那個引用類型元素是指向同一內存地址!
,PS:最後,假如你的參數和舊數組都不含有引用類型,你可使用concat
來進行數組深度拷貝~prototype
Array.of(element0[, element1[, ...[, elementN]]])
該方法用於建立一個新的Array
實例,傳入的參數將依次成爲新數組的元素。該方法和數組的構造函數區別在於,Array(5)
返回[,,,,],而Array.of(5)
返回[5]請看示例代碼:code
Array.isArray(obj)
很少說了,判斷輸入的參數obj是不是數組類型,若是是,返回true
,不然返回false
對象
Array.from(arrayLike[, mapFn[, thisArg]])
該方法爲ES2015
新增的方法,返回一個新的數組對象,其參數有三個:第一個參數
內存
爲數組類型或者類數組類型的對象,是必選參數,`arraylike`,顧名思義,要與數組結構相似。通常來講,有如下幾種狀況:一個知足以`數字爲鍵,而且擁有length屬性的對象`,es6新增的數據結構`set` 和 `map`,固然別忘了`字符串對象`~,它固然也是`arraylike`~
第二個參數
可選參數,一旦你指定了該參數,你的數據會通過該函數處理後再返回
第三個參數
可選參數,指定from方法運行時的this環境
上代碼~~
細心的你,可能還發現,新的數組去重了呢?!是咋回事呢?這和Array.from 可沒有關係噢,請移步 ES6 Set數據結構~