Prototype使用指南之enumerable.js


Posted in Javascript onJanuary 10, 2007

Enumerable是一个抽象对象(需要说明的是,javascript中并没有类的概念,所指的类也就是一个函数,继承一般指的是一个对象(父)将它的方法属性copy(通过Object.extend, copy的是引用)到子类(函数)的prototype属性(一个对象)中) Enumerable不能直接使用,它被很多枚举类型(Hash、Array、Range等)所继承,继承的类型都要实现一个_each方法,提供具体类型的枚举方法 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])] 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对象的字符串表示 NND的,原来Enumerable有这么多函数,感觉作者是不是学习Ruby太过了,把什么方法都往Prototype上挪,搞的我们学习的也辛苦,Prototype文件也变得越来越大,浪费带宽啊 唉,发现其中很多函数越解释越难懂,大家还是多多看看源代码理解吧,偶的文字表达能力真的不乍的,有的实在不知道怎么表达, 希望大家还是只是把本文当成一个不正规的参考,有什么问题还是看源代码理解,不然误导了你我可不负责啊

Javascript 相关文章推荐
js几个验证函数代码
Mar 25 Javascript
javascript改变position值实现菜单滚动至顶部后固定
Jan 18 Javascript
jQuery EasyUI datagrid实现本地分页的方法
Feb 13 Javascript
原生js与jQuery实现简单的tab切换特效对比
Jul 30 Javascript
由浅入深剖析Angular表单验证
Jul 14 Javascript
基于cssSlidy.js插件实现响应式手机图片轮播效果
Aug 30 Javascript
bootstrap Validator 模态框、jsp、表单验证 Ajax提交功能
Feb 17 Javascript
Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件
Sep 18 Javascript
vue-cli中打包图片路径错误的解决方法
Oct 26 Javascript
记一次vue-webpack项目优化实践详解
Feb 17 Javascript
关于vue状态过渡transition不起作用的原因解决
Apr 09 Javascript
探究一道价值25k的蚂蚁金服异步串行面试题
Aug 21 Javascript
Prototype使用指南之base.js
Jan 10 #Javascript
Prototype使用指南之string.js
Jan 10 #Javascript
Prototype最新版(1.5 rc2)使用指南(1)
Jan 10 #Javascript
个人总结的一些关于String、Function、Array的属性和用法
Jan 10 #Javascript
[JS源码]超长文章自动分页(客户端版)
Jan 09 #Javascript
Javascript与vbscript数据共享
Jan 09 #Javascript
In Javascript Class, how to call the prototype method.(three method)
Jan 09 #Javascript
You might like
php创建多级目录的方法
2015/03/24 PHP
修改发贴的编辑功能
2007/03/07 Javascript
js 格式化时间日期函数小结
2010/03/20 Javascript
jquery lazyload延迟加载技术的实现原理分析
2011/01/24 Javascript
JavaScript不刷新实现浏览器的前进后退功能
2014/11/05 Javascript
轻量级javascript 框架Backbone使用指南
2015/07/24 Javascript
js实现tab切换效果实例
2015/09/16 Javascript
JS实现可自定义大小,可双击关闭的弹出层效果
2015/10/16 Javascript
jQuery插件实现带圆点的焦点图片轮播切换
2016/01/18 Javascript
详解百度百科目录导航树小插件
2017/01/08 Javascript
jQuery实现select模糊查询(反射机制)
2017/01/14 Javascript
jquery仿苹果的时间/日期选择效果
2017/03/08 Javascript
谈谈VUE种methods watch和compute的区别和联系
2017/08/01 Javascript
Vue组件中slot的用法
2018/01/30 Javascript
Vue组件化开发思考
2018/02/02 Javascript
微信小程序实现手指触摸画板
2018/07/09 Javascript
发布一款npm包帮助理解npm的使用
2019/01/03 Javascript
vue页面切换项目实现转场动画的方法
2019/11/12 Javascript
JQuery表单元素取值赋值方法总结
2020/05/12 jQuery
vue props default Array或是Object的正确写法说明
2020/07/30 Javascript
小程序自定义圆形进度条
2020/11/17 Javascript
JavaScript的一些小技巧分享
2021/01/06 Javascript
python中对list去重的多种方法
2014/09/18 Python
python多重继承新算法C3介绍
2014/09/28 Python
python监控文件并且发送告警邮件
2018/06/21 Python
使用Python的Dataframe取两列时间值相差一年的所有行方法
2018/07/10 Python
python 实现将txt文件多行合并为一行并将中间的空格去掉方法
2018/12/20 Python
Python基本类型的连接组合和互相转换方式(13种)
2019/12/16 Python
美国紧身牛仔裤品牌:NYDJ
2017/05/24 全球购物
掌上明珠Java程序员面试总结
2016/02/23 面试题
2013届毕业生求职信范文
2013/11/20 职场文书
企业优秀员工事迹材料
2014/05/28 职场文书
医院安全生产月活动总结
2014/07/05 职场文书
支部书记四风问题自我剖析材料
2014/09/29 职场文书
2015年试用期工作总结
2014/12/12 职场文书
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/07 其他游戏