最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Prototype使用指南之enumerable.js

 更新時(shí)間:2007年01月10日 00:00:00   作者:  
Enumerable是一個(gè)抽象對(duì)象(需要說(shuō)明的是,javascript中并沒(méi)有類的概念,所指的類也就是一個(gè)函數(shù),繼承一般指的是一個(gè)對(duì)象(父)將它的方法屬性copy(通過(guò)Object.extend, copy的是引用)到子類(函數(shù))的prototype屬性(一個(gè)對(duì)象)中) Enumerable不能直接使用,它被很多枚舉類型(Hash、Array、Range等)所繼承,繼承的類型都要實(shí)現(xiàn)一個(gè)_each方法,提供具體類型的枚舉方法 Enumerable為其他子類提供了如下的方法: each(iterator): iterator是一個(gè)函數(shù)對(duì)象, 這個(gè)方法調(diào)用具體類型的_each方法對(duì)自身包含的每個(gè)對(duì)象調(diào)用iterator,例如如果Enumerable具體指的是一個(gè)Array,eg: var a=[2,3,4], 則a.each(iterator)方法將依次調(diào)用iterator(2,0) ,iterator(3,1), iterator(4,3),其中第二個(gè)參數(shù)指的是索引。這個(gè)方法幾乎在Enumerable中的每個(gè)方法中都要用到 eachSlice(number, iterator):將Enumerable類型對(duì)象每個(gè)每個(gè)按照number分開,例如[1,2,3,4,5].eachSlice(3)=>[[1,2,3],[4,5]], 沒(méi)有提供iterator, 則iterator=Prototype.K: function(k){return k},Prototype中的很多iterator默認(rèn)值都是這個(gè),或者是Prototype.emptyFunction: function() {},其實(shí)實(shí)際上返回的是[iterator([1,2,3]),iterator([4,5])] all(iterator): 對(duì)Enumerable類型中的每個(gè)值調(diào)用iterator,如果其中有一個(gè)返回false,則返回false,否則返回true,相當(dāng)于判斷是否每個(gè)值執(zhí)行iterator都是"true" any(iterator): 跟all相反,判斷是否每個(gè)值都是"false"(是否有一個(gè)值是true) collect(iterator)/map: 對(duì)每個(gè)值調(diào)用iterator,將結(jié)果組成一個(gè)新的數(shù)組返回 detect(iterator)/find: 對(duì)每個(gè)值調(diào)用iterator,如果有一個(gè)不為false,則返回這個(gè)執(zhí)行iterator后不為false的值(不是返回執(zhí)行iterator后的值),相當(dāng)于找出第一個(gè)真值 findAll(iterator)/select: 相當(dāng)于detect, 但是找出所有的真值,返回一個(gè)數(shù)組 grep(pattern, iterator):返回所以符合pattern的值,iterator提供的話,則返回執(zhí)行iterator的值 include(object)/member: 數(shù)組中是否包含object inGroupsOf(number, fillWith): eachSlice的變異版本,按照number將對(duì)象分開,如果分開后的數(shù)組的最后一個(gè)值的length小于number, 則用fillwith填充, 例如[1,2,3,4,5].inGroupsOf(3)=>[[1,2,3],[4,5,null]] inject(memo, iterator): 注入 invoke(method): 調(diào)用 max(iterator): 最大值 min(iterator): 最小值 partition(iterator): 分離 pluck(property): 采集 reject(iterator): 不合格的產(chǎn)品, 于findAll相反 sortBy(iterator): 根據(jù)iterator排序,如果調(diào)用的對(duì)象是Array的話,直接調(diào)用內(nèi)置的sort(iterator)就行了 toArray()/entries: 將調(diào)用對(duì)象的每個(gè)值組成一個(gè)數(shù)組返回 zip(): 例如[2,3,4].zip([5,6,7])=>[[2,5],[3,6],[4,7]], 如果最后一個(gè)參數(shù)類型為function,將返回[iterator([2,5]),iterator([3,6]),iterator([4,7])], inspect(): Enumerable對(duì)象的字符串表示 NND的,原來(lái)Enumerable有這么多函數(shù),感覺(jué)作者是不是學(xué)習(xí)Ruby太過(guò)了,把什么方法都往Prototype上挪,搞的我們學(xué)習(xí)的也辛苦,Prototype文件也變得越來(lái)越大,浪費(fèi)帶寬啊 唉,發(fā)現(xiàn)其中很多函數(shù)越解釋越難懂,大家還是多多看看源代碼理解吧,偶的文字表達(dá)能力真的不乍的,有的實(shí)在不知道怎么表達(dá), 希望大家還是只是把本文當(dāng)成一個(gè)不正規(guī)的參考,有什么問(wèn)題還是看源代碼理解,不然誤導(dǎo)了你我可不負(fù)責(zé)啊

相關(guān)文章

最新評(píng)論

民乐县| 荃湾区| 库伦旗| 同德县| 镇雄县| 油尖旺区| 六安市| 南城县| 连州市| 通渭县| 罗城| 榆林市| 三穗县| 林州市| 青浦区| 星座| 酒泉市| 九龙坡区| 渑池县| 神农架林区| 开鲁县| 都匀市| 宝应县| 五台县| 伊川县| 呼图壁县| 莒南县| 栾城县| 黎川县| 呈贡县| 鄄城县| 金川县| 兴城市| 庆云县| 铜梁县| 民勤县| 洪洞县| 新沂市| 赣榆县| 都匀市| 宜良县|