摘要:日常開發(fā)過程中,發(fā)現(xiàn)自己對很多原生方法都不知道,有些早已實現(xiàn)的方法,卻傻乎乎自己去實現(xiàn),因此萌生了總結(jié)和練習(xí)內(nèi)置對象方法的想法。
日常開發(fā)過程中,發(fā)現(xiàn)自己對很多原生方法都不知道,有些早已實現(xiàn)的方法,卻傻乎乎自己去實現(xiàn),因此萌生了總結(jié)和練習(xí)JS內(nèi)置對象方法的想法。
以下內(nèi)容可能并不有趣,請謹(jǐn)慎觀看?,參考自MDN
Array.length
這個大家都再熟悉不過啦,表示數(shù)組長度~
Array.prototype
數(shù)組對象的原型~
Array.prototype.copyWithin(target,start,end)
該方法解釋起來似乎不太好描述,簡單來說,copyWithin用于把從目標(biāo)數(shù)組Array拷貝一部分出來,并把這一 部分放入target指向的位置(target,start,end都為整數(shù)),而且不會改變數(shù)組長度!??!也就是說,如果拷貝的那部分放入新數(shù)組時,如果長度超出原數(shù)組長度,那么多余長度的那部分會被忽略,不會繼續(xù)加入到新數(shù)組中。
示例代碼:
代碼中有一段注釋,也是比較關(guān)鍵的一點,該函數(shù)做的操作是把拷貝出來的數(shù)據(jù)替換掉target所指位置的原來的元素,注意,是替換,原來target所在位置的元素在新數(shù)組中不再存在!!
Array.prototype.concat()
該方法用于連接多個數(shù)組或者非數(shù)組值,并且返回一個新數(shù)組。
具體看示例:
該方法的參數(shù)有一點需要解釋,傳入的多個參數(shù)中,如果是數(shù)組類型,則將它的元素復(fù)制一份并push到新數(shù)組中,若是其他類型,則直接當(dāng)作元素push到新數(shù)組中。重點:concat的運算過程是重新復(fù)制一份內(nèi)容傳入新數(shù)組,因此新數(shù)組和舊數(shù)組的內(nèi)存地址是不同的,對新數(shù)組做的改變并不會影響到原來的數(shù)組,但是!注意這個但是!我說三遍但是!這條原則是基于所有數(shù)組元素都是基本類型,如果說某一個元素是引用類型,那么concat所復(fù)制的也只不過是這個引用類型的一個引用,指向的是同一個內(nèi)存地址!總結(jié):新數(shù)組的內(nèi)存地址和舊數(shù)組不一樣,但是新數(shù)組內(nèi)引用類型元素和舊數(shù)組內(nèi)相對的那個引用類型元素是指向同一內(nèi)存地址!,PS:最后,假如你的參數(shù)和舊數(shù)組都不含有引用類型,你可以使用concat來進行數(shù)組深度拷貝~
Array.of(element0[, element1[, ...[, elementN]]])
該方法用于創(chuàng)建一個新的Array實例,傳入的參數(shù)將依次成為新數(shù)組的元素。該方法和數(shù)組的構(gòu)造函數(shù)區(qū)別在于,Array(5)返回[,,,,],而Array.of(5)返回[5]請看示例代碼:
Array.isArray(obj)
不多說了,判斷輸入的參數(shù)obj是否是數(shù)組類型,如果是,返回true,否則返回
false
Array.from(arrayLike[, mapFn[, thisArg]])
該方法為ES2015新增的方法,返回一個新的數(shù)組對象,其參數(shù)有三個:
第一個參數(shù)
為數(shù)組類型或者類數(shù)組類型的對象,是必選參數(shù),`arraylike`,顧名思義,要與數(shù)組結(jié)構(gòu)類似。一般來說,有以下幾種情況:一個滿足以`數(shù)字為鍵,并且擁有l(wèi)ength屬性的對象`,es6新增的數(shù)據(jù)結(jié)構(gòu)`set` 和 `map`,當(dāng)然別忘了`字符串對象`~,它當(dāng)然也是`arraylike`~
第二個參數(shù)
可選參數(shù),一旦你指定了該參數(shù),你的數(shù)據(jù)會經(jīng)過該函數(shù)處理后再返回
第三個參數(shù)
可選參數(shù),指定from方法運行時的this環(huán)境
上代碼~~
細(xì)心的你,可能還發(fā)現(xiàn),新的數(shù)組去重了呢?!是咋回事呢?這和Array.from 可沒有關(guān)系噢,請移步 ES6 Set數(shù)據(jù)結(jié)構(gòu)~
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/81765.html
摘要:語法添加刪除項目的位置要刪除的項目數(shù)量要添加的第一個元素第二個第三個返回值被刪除的項目,如果有的話其中,第二個參數(shù)如果設(shè)置為,則不會刪除任何項目。 第一篇篇幅太長了,自己回顧都覺得有點傷神。。以后盡量多篇少字~ 首先簡單介紹Array數(shù)組對象 什么是數(shù)組: 用單獨的變量名存儲一系列的值 如何創(chuàng)建數(shù)組:(有3種方法) 1、常規(guī)方式: var gyt=new Array(); gyt[0...
摘要:注每個內(nèi)置對象都是原生對象,一個內(nèi)置的構(gòu)造函數(shù)是一個內(nèi)置的對象,也是一個構(gòu)造函數(shù)。從對象返回月份。以毫秒設(shè)置對象。刪除數(shù)組的第一個元素,返回值是刪除的元素。對象屬性創(chuàng)建該正則對象的構(gòu)造函數(shù)。對象當(dāng)以非構(gòu)造函數(shù)形式被調(diào)用時,等同于。 內(nèi)置對象與原生對象 內(nèi)置(Build-in)對象與原生(Naitve)對象的區(qū)別在于:前者總是在引擎初始化階段就被創(chuàng)建好的對象,是后者的一個子集;而后者包括...
摘要:前言大家好,小弟飛狐,愛學(xué)習(xí),愛裝逼,樂于分享,初來乍到,請多多關(guān)照。特別注意一下,函數(shù)在中是對象,不是一種數(shù)據(jù)類型,這可是世界的一等公民。和,和的關(guān)系又很曖昧,后面細(xì)說,要不然會暈菜。基本數(shù)據(jù)類型,,,,,這五種基本數(shù)據(jù)類型是按值訪問的。 前言 大家好,小弟飛狐,愛學(xué)習(xí),愛裝逼,樂于分享,初來乍到,請多多關(guān)照(~ o ~)~zZ。出道幾年,對JavaScript情有獨鐘,聊技術(shù)之前,...
摘要:對象創(chuàng)建字面量方式構(gòu)造函數(shù)方式也可以這樣不過這樣的話,為何不選擇字面量方式字面量方式和方式的寫法是等價的,返回的結(jié)果是同種類的對象。構(gòu)造函數(shù)產(chǎn)生實例時,實例通過其對應(yīng)原型對象的訪問對應(yīng)的構(gòu)造函數(shù)對象。 前端學(xué)習(xí):教程&模塊化/規(guī)范化/工程化/優(yōu)化&工具/調(diào)試&值得關(guān)注的博客/Git&面試資源匯總 歡迎提issues斧正:對象&對象使用 Object對象 在 JavaScript 中,對...
摘要:他指示了一個對象的屬性,返回的將用來獲得該屬性對應(yīng)的值在上面的分析中,我們知道,當(dāng)傳入的是一個函數(shù)時,還要經(jīng)過一個叫的內(nèi)置函數(shù)才能獲得最終的所以此處的必然是優(yōu)化回調(diào)的作用了。 開篇說明 對的,讓你所見,又開始造輪子了。哈哈,造輪子我們是認(rèn)真的~ 源碼閱讀是必須的,Underscore是因為剛剛學(xué)習(xí)整理了一波函數(shù)式編程,加上自己曾經(jīng)沒有太多閱讀源碼的經(jīng)驗,先拿Underscore練練手,...
閱讀 2900·2021-11-17 09:33
閱讀 3682·2021-11-16 11:42
閱讀 3504·2021-10-26 09:50
閱讀 1358·2021-09-22 15:49
閱讀 3054·2021-08-10 09:44
閱讀 3691·2019-08-29 18:36
閱讀 3947·2019-08-29 16:43
閱讀 2232·2019-08-29 14:10