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 相关文章推荐
window.location和document.location的区别分析
Dec 23 Javascript
Jquery进度条插件 Progress Bar小问题解决
Jul 12 Javascript
父节点获取子节点的字符串示例代码
Feb 26 Javascript
node.js入门教程
Jun 01 Javascript
详解JS函数重载
Dec 04 Javascript
JS实现从表格中动态删除指定行的方法
Mar 31 Javascript
AngularJS中的过滤器filter用法完全解析
Apr 22 Javascript
Vue2.0 从零开始_环境搭建操作步骤
Jun 14 Javascript
Webpack性能优化 DLL 用法详解
Aug 10 Javascript
详解Axios统一错误处理与后置
Sep 26 Javascript
npm的lock机制解析
Jun 20 Javascript
小程序Scroll-view上拉滚动刷新数据
Jun 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
解析将多维数组转换为支持curl提交的一维数组格式
2013/07/08 PHP
PHP类继承 extends使用介绍
2014/01/14 PHP
利用PHP将图片转换成base64编码的实现方法
2016/09/13 PHP
php 实现银联商务H5支付的示例代码
2019/10/12 PHP
Javascript insertAfter() 实现函数代码
2011/10/12 Javascript
使用js实现一个可编辑的select下拉列表
2014/02/20 Javascript
Bootstrap每天必学之按钮(一)
2015/11/24 Javascript
JavaScript 七大技巧(二)
2015/12/13 Javascript
Jquery判断form表单数据是否变化
2016/03/30 Javascript
js输出数据精确到小数点后n位代码
2016/07/02 Javascript
详细总结Javascript中的焦点管理
2016/09/17 Javascript
Angular2实现的秒表及改良版示例
2019/05/10 Javascript
vue-cli在 history模式下的配置详解
2019/11/26 Javascript
vue中destroyed方法的使用说明
2020/07/21 Javascript
JavaScript中ES6规范中let和const的用法和区别
2020/08/06 Javascript
Javascript confirm多种使用方法解析
2020/09/25 Javascript
JS绘图Flot如何实现动态可刷新曲线图
2020/10/16 Javascript
Python操作sqlite3快速、安全插入数据(防注入)的实例
2014/04/26 Python
Python中Collections模块的Counter容器类使用教程
2016/05/31 Python
关于Python中Inf与Nan的判断问题详解
2017/02/08 Python
基于python代码实现简易滤除数字的方法
2018/07/17 Python
python requests使用socks5的例子
2019/07/25 Python
python 创建一维的0向量实例
2019/12/02 Python
python如何通过闭包实现计算器的功能
2020/02/22 Python
python3中TQDM库安装及使用详解
2020/11/18 Python
html5 postMessage解决跨域、跨窗口消息传递方案
2016/12/20 HTML / CSS
GetYourGuide台湾:预订旅游活动、景点和旅游项目
2019/06/10 全球购物
《巨人的花园》教学反思
2014/02/12 职场文书
小学新学期寄语
2014/04/02 职场文书
委托培训协议书
2014/11/17 职场文书
男方婚礼答谢词
2015/01/20 职场文书
财务部会计岗位职责
2015/02/03 职场文书
求职信:会计求职的写作技巧
2019/04/24 职场文书
Pytorch DataLoader shuffle验证方式
2021/06/02 Python
在Java中Collection的一些常用方法总结
2021/06/13 Java/Android
MongoDB修改oplog大小的四种方法
2022/04/11 MongoDB