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