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与Prototype并存的冲突的解决方法
Aug 29 Javascript
js 获取子节点函数 (兼容FF与IE)
Apr 18 Javascript
JS关键字变色实现思路及代码
Feb 21 Javascript
JS delegate与live浅析
Dec 21 Javascript
javascript每日必学之多态
Feb 23 Javascript
JS实现的几个常用算法
Nov 12 Javascript
微信小程序 配置文件详细介绍
Dec 14 Javascript
jQuery实现拼图小游戏(实例讲解)
Jul 24 jQuery
Angularjs添加排序查询功能的实例代码
Oct 24 Javascript
vue项目打包之后背景样式丢失的解决方案
Jan 17 Javascript
JavaScript动态检测密码强度原理及实现方法详解
Jun 11 Javascript
详解vuex数据传输的两种方式及this.$store undefined的解决办法
Aug 26 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 mysql索引问题
2008/06/07 PHP
php tp验证表单与自动填充函数代码
2012/02/22 PHP
php中Session的生成机制、回收机制和存储机制探究
2014/08/19 PHP
详谈PHP中的密码安全性Password Hashing
2017/02/04 PHP
PHP简单实现解析xml为数组的方法
2018/05/02 PHP
PHP分页显示的方法分析【附PHP通用分页类】
2018/05/10 PHP
div层的移动及性能优化
2010/11/16 Javascript
JavaScript针对网页节点的增删改查用法实例
2015/02/02 Javascript
jQuery前端分页示例分享
2015/02/10 Javascript
基于jQuery插件实现环形图标菜单旋转切换特效
2015/05/15 Javascript
JS制作手机端自适应缩放显示
2015/06/11 Javascript
jQuery实现打开页面渐现效果示例
2016/07/27 Javascript
JS拉起或下载app的实现代码
2017/02/22 Javascript
vue.js加载新的内容(实例代码)
2017/06/01 Javascript
vue中如何创建多个ueditor实例教程
2017/11/14 Javascript
React Form组件的实现封装杂谈
2018/05/07 Javascript
Vue.js获取被选择的option的value和text值方法
2018/08/24 Javascript
JS获取当前时间的实例代码(昨天、今天、明天)
2018/11/13 Javascript
VUE 实现复制内容到剪贴板的两种方法
2019/04/24 Javascript
使用Vue实现一个树组件的示例
2020/11/06 Javascript
JavaScript 异步时序问题
2020/11/20 Javascript
Python中字典(dict)和列表(list)的排序方法实例
2014/06/16 Python
python利用标准库如何获取本地IP示例详解
2017/11/01 Python
深入浅析Python的类
2018/06/22 Python
python八皇后问题的解决方法
2018/09/27 Python
python实现多层感知器
2019/01/18 Python
利用rest framework搭建Django API过程解析
2019/08/31 Python
pycharm运行scrapy过程图解
2019/11/22 Python
香港连卡佛百货官网:Lane Crawford
2019/09/04 全球购物
SIDESTEP荷兰:在线购买鞋子
2019/11/18 全球购物
新春文艺演出主持词
2014/03/27 职场文书
关于成绩下滑的自我检讨书
2014/09/20 职场文书
反腐倡廉剖析材料
2014/09/30 职场文书
求职简历自荐信怎么写
2015/03/26 职场文书
2016企业先进集体事迹材料
2016/02/25 职场文书
Nginx tp3.2.3 404问题解决方案
2021/03/31 Servers