`
wutao33543
  • 浏览: 63901 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Prototype使用学习手册指南之Enumerable.js

阅读更多
Enumerable是一个抽象对象。Enumerable不能直接使用,它被很多枚举类型(Hash、Array、Range等)所继承,继承的类型都要实现一个_each方法,提供具体类型的枚举方法。需要说明的是,javascript中并没有类的概念,所指的类也就是一个函数,继承一般指的是一个对象(父)将它的方法属性copy(通过Object.extend, copy的是引用)到子类(函数)的prototype属性(一个对象)中。


Enumerable为其他子类提供了如下的方法:

all(iterator): 对Enumerable类型中的每个值调用iterator,如果其中有一个返回false,则返回false,否则返回true,相当于判断是否每个值执行iterator都是"true"

any(iterator): 跟all相反,判断是否每个值都是"false"(是否有一个值是true)

collect(iterator)/map: 对每个值调用iterator,将结果组成一个新的数组返回

detect(iterator)/find: 对每个值调用iterator,如果有一个不为false,则返回这个执行iterator后不为false的值(不是返回执行iterator后的值),相当于找出第一个真值

findAll(iterator)/select: 相当于detect, 但是找出所有的真值,返回一个数组

grep(pattern, iterator):返回所以符合pattern的值,iterator提供的话,则返回执行iterator的值

include(object)/member: 数组中是否包含object

inGroupsOf(number, fillWith): eachSlice的变异版本,按照number将对象分开,如果分开后的数组的最后一个值的length小于number, 则用fillwith填充, 例如[1,2,3,4,5].inGroupsOf(3)=>[[1,2,3],[4,5,null]]

inject(memo, iterator): 注入

invoke(method): 调用

max(iterator): 最大值

min(iterator): 最小值

partition(iterator): 分离

pluck(property): 采集

reject(iterator): 不合格的产品, 于findAll相反

sortBy(iterator): 根据iterator排序,如果调用的对象是Array的话,直接调用内置的sort(iterator)就行了

toArray()/entries: 将调用对象的每个值组成一个数组返回

zip(): 例如[2,3,4].zip([5,6,7])=>[[2,5],[3,6],[4,7]], 如果最后一个参数类型为function,将返回[iterator([2,5]),iterator([3,6]),iterator([4,7])],

inspect(): Enumerable对象的字符串表示

each(iterator): iterator是一个函数对象, 这个方法调用具体类型的_each方法对自身包含的每个对象调用iterator,例如如果Enumerable具体指的是一个Array,eg: var a=[2,3,4], 则a.each(iterator)方法将依次调用iterator(2,0) ,iterator(3,1), iterator(4,3),其中第二个参数指的是索引。这个方法几乎在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])]
分享到:
评论

相关推荐

    Prototype使用指南之enumerable.js

    Enumerable是一个抽象对象(需要说明的是,javascript中并没有类的概念,所指的类也就是一个函数,继承一般指的是一个对象(父)将它的方法属性copy(通过Object.extend, copy的是引用)到子类(函数)的prototype属性(一...

    Enumerable.js:适用于所有类型集合的实用函数

    可枚举的.js适用于所有类型集合的实用函数当您使用 JavaScript 数组或哈希表时,您可以通过 Underscore、Zepto、jQuery 或 ECMAScript5 原生库等多种方式获取实用程序函数。 为什么我们不能像其他可以迭代的数据结构...

    Prototype使用指南之array.js

     将iterable转化为数组,如果iterable定义了toArray方法,就调用这个方法,否则利用iterable的length属性进行枚举, 如果iterable没有length属性的话就返回空数组[] Array对象除了扩展Enumerable对象的方法外,...

    enumerable.lua:一个lua集合库

    local Enumerable = require ( ' enumerable ' ) collectionInstance = Enumerable. create ({ 1 , 2 , 3 , 4 , 5 }) secondElement = collectionInstance[ 2 ] collectionInstance: each ( function ( value , ...

    Prototype使用指南之range.js

    Range对象是一个继承自Enumerable的”范围”对象,你可以把它看成[x,x+1,x+2,x+3……x+n]的数组看待,但是比这样的数组跟节省存储空间,因为range对象只是保存x和x+n而已 要创建一个Range对象可以调用$R(start, end,...

    hls.min.js

    return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="/hls.js/dist/",e(e.s=7)}([function(t,e,r){"use strict";function i(){}function a(t,e){return e="["+t+"] >...

    linq.js_ver 2.2.0.2

    var queryResult = Enumerable.From(jsonArray) .Where(function (x) { return x.user.id ) .OrderBy(function (x) { return x.user.screen_name }) .Select(function (x) { return x.user.screen_name + ':' ...

    pdfh5.js PC端与手机端h5页面pdf展示

    1,PC端与手机端h5页面pdf展示 2,pdfh5.js

    linq:linq.js-适用于JavaScript的LINQ

    这是.NET 库JavaScript实现。 它包含所有原始的.NET方法以及一些其他方法。 安装 使用npm: npm install linq CDN可用性: CDN 网址 unpkg jsDelivr packd 例子 // C# LINQ - delegate Enumerable . Range ...

    enumerable.github.io:可枚举的官方网站

    枚举.github.io 官方网站可枚举。

    weapp.qrcode.js

    var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); // Not own constructor property must be Object if (obj.constructor &&...

    Prototype Enumerable对象 学习第1/2页

    Enumerable是Prototype框架的基石,而Enumerable不单独使用,在Prototype中其它对象mix了Enumerable里面的方法,这样就可以在这些对象上应用Enumerable的方法,这样的对象有:Array,Hash,ObjectRange,还有一些和...

    enumerable:一个简单的 JavaScript 可枚举库

    可枚举的 一个简单的 JavaScript 链式可枚举库。

    prototype手册

    prototype 精妙的文档 • Extensions for the Object class ...• New objects and classes defined by prototype.js • The PeriodicalExecuter object • The Prototype object • The Enumerable object

    truffle4.1.12报错

    return t.d(a,"a",a),a},t.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},t.p="",t.w={},t(t.s=1036)}([function(e,a,t){try{var c=t(1);if("function"!=typeof c.inherits)throw"";e.exports...

    Prototype源码浅析 Enumerable部分之each方法

    在javascript中,根本找不到Enumerable的影子,因为这一块是Prototype作者从Ruby中借鉴过来的。并且Enumerable在实际中根本没有直接应用的机会,都是混入到其他的对象中,可以说是其他对象的一个“父类”(不过只是...

    javascript的propertyIsEnumerable()方法使用介绍

    代码如下: /* propertyIsEnumerable()是用来检测属性是否属于某个对象的,如果检测到了,返回true,否则返回false. 1.这个属性必须属于实例的,并且不属于原型. 2.这个属性必须是可枚举的,也...//true MyObject.prototype

    arguments:永远不要写“Array.prototype.slice.call(arguments);” 以后再!

    这是基于但使用Object.defineProperty(arguments.constructor.prototype, [functionName], {enumerable: false, configurable: true, value: [functionBody]})代替,以避免迭代时出现混乱。 Object....

    前端开源库-node-enumerable

    前端开源库-node-enumerable节点可枚举,ES6就绪LINQ功能以typescript编写

Global site tag (gtag.js) - Google Analytics