欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Prototype使用指南之enumerable.js

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

相關(guān)文章

最新評論