久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

JavaScript,通過分析Array.prototype.push重新認(rèn)識(shí)Array

 quasiceo 2015-02-08

JavaScript,,通過分析Array.prototype.push重新認(rèn)識(shí)Array

  在閱讀ECMAScript的文檔的時(shí)候,,有注意到它說,數(shù)組的push方法其實(shí)不僅限于在數(shù)組中使用,,專門留作通用方法,。難道是說,在一些類數(shù)組的地方也可以使用,?而哪些是和數(shù)組非常相像的呢,,大家或許一下子就可以想到就是Object對(duì)象。因?yàn)锳rray就是繼承自O(shè)bject的,,可以用 [] instanceof Object,,會(huì)發(fā)現(xiàn)返回的是true。當(dāng)然大家都知道,,這也不是什么新鮮事,。那我們可以大膽嘗試一下,如果我們將數(shù)組的push方法應(yīng)用在對(duì)象上,,會(huì)一個(gè)怎么樣的表現(xiàn)呢,?

  

  我們通過call,將this的值指向了obj,,然后進(jìn)行push,。可以發(fā)現(xiàn),,obj對(duì)象里多了一個(gè) '0': 'zero'和數(shù)組的'length'屬性,!我們都知道,一般對(duì)象是沒有l(wèi)ength屬性的,,所以當(dāng)我們要知道Object有多少個(gè)屬性時(shí),,一般都要用for in來進(jìn)行對(duì)象迭代。那可以知道,,這個(gè)length屬性則是由Array.prototype.push這個(gè)方法,,內(nèi)部傳進(jìn)去的。為了接近我們的想法,我們可以繼續(xù)實(shí)驗(yàn),。

  

  這一次我們自己傳入了一個(gè)length值,我們可以看得出,,push方法是根據(jù)length的值來為key命名的,,大致思路應(yīng)該如下?! ?/p>

  

  其實(shí)JavaScript數(shù)組的數(shù)據(jù)結(jié)構(gòu)就是棧,,遵循著“后進(jìn)先出”,當(dāng)然這個(gè)length-1也就充當(dāng)著top這個(gè)角色啦,!當(dāng)然如果我們要使用push進(jìn)去的屬性,,我們就要使用方括號(hào)的形式[],因?yàn)辄c(diǎn)符號(hào)是不能直接接上數(shù)字的,。所以就成了 obj[0] == 'zero',。這乍一看!尼瑪,,這不就是數(shù)組么,,喲,只是長(zhǎng)得像而已~~畢竟Array.prototype里的方法可豐富多啦,。特別是ECMAScript新增的各種數(shù)組迭代方法,,forEach, map,some,reduce之類的,簡(jiǎn)直好用到不行,,特別是最近發(fā)掘的reduce,,可以配合之前剛剛探討過的遞歸算法使用,簡(jiǎn)直開發(fā)利器,。有時(shí)間我會(huì)專門說一下reduce該如何使用,!

  

  

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多