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 相关文章推荐
翻译整理的jQuery使用查询手册
Mar 07 Javascript
JSQL  一个 web DB 的封装
May 05 Javascript
javascript中style.left和offsetLeft的用法说明
Mar 07 Javascript
JavaScript获取某年某月的最后一天附截图
Jun 23 Javascript
AngularJS语法详解
Jan 23 Javascript
JavaScript数组迭代器实例分析
Jun 09 Javascript
详谈javascript异步编程
Feb 21 Javascript
JavaScript组合模式学习要点
Aug 26 Javascript
在Vue中使用highCharts绘制3d饼图的方法
Feb 08 Javascript
详解vue.js移动端配置flexible.js及注意事项
Apr 10 Javascript
JS document文档的简单操作完整示例
Jan 13 Javascript
如何管理Vue中的缓存页面
Feb 06 Vue.js
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
phpMyadmin 用户权限中英对照
2010/04/02 PHP
保存到桌面、设为桌面且带图标的PHP代码
2013/11/19 PHP
php查询mysql大量数据造成内存不足的解决方法
2015/03/04 PHP
laravel5表单唯一验证的实例代码
2019/09/30 PHP
JavaScript的目的分析
2007/01/05 Javascript
JavaScript中常见陷阱小结
2010/04/27 Javascript
jQuery获取(选中)单选,复选框,下拉框中的值
2014/02/21 Javascript
动态加载js、css等文件跨iframe实现
2014/02/24 Javascript
Java File类的常用方法总结
2015/03/18 Javascript
Jquery简单实现GridView行高亮的方法
2015/06/15 Javascript
JavaScript的instanceof运算符学习教程
2016/06/08 Javascript
jQuery插件echarts实现的去掉X轴、Y轴和网格线效果示例【附demo源码下载】
2017/03/04 Javascript
ECMAScript6 新特性范例大全
2017/03/24 Javascript
详解Node.js 命令行程序开发教程
2017/06/07 Javascript
webpack打包并将文件加载到指定的位置方法
2018/02/22 Javascript
对vue.js中this.$emit的深入理解
2018/02/23 Javascript
一个简单的node.js界面实现方法
2018/06/01 Javascript
Layui之table中的radio在切换分页时无法记住选中状态的解决方法
2019/09/02 Javascript
Python的ORM框架SQLObject入门实例
2014/04/28 Python
python实现JAVA源代码从ANSI到UTF-8的批量转换方法
2015/08/10 Python
Jupyter notebook远程访问服务器的方法
2018/05/24 Python
python二维码操作:对QRCode和MyQR入门详解
2019/06/24 Python
Python搭建Spark分布式集群环境
2019/07/05 Python
Python依赖包整体迁移方法详解
2019/08/15 Python
Python如何使用字符打印照片
2020/01/03 Python
Python爬取微信小程序通用方法代码实例详解
2020/09/29 Python
python如何实现递归转非递归
2021/02/25 Python
canvas裁剪clip()函数的具体使用
2018/03/01 HTML / CSS
音乐系毕业生自荐信
2013/10/27 职场文书
广告设计应届生求职信
2014/03/01 职场文书
市场营销专业毕业生求职信
2014/03/26 职场文书
大学应届毕业生求职信
2014/05/24 职场文书
求职信内容怎么写
2014/05/26 职场文书
吴仁宝观后感
2015/06/09 职场文书
新闻稿格式范文
2015/07/18 职场文书
用Python可视化新冠疫情数据
2022/01/18 Python