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 flash激活
Oct 19 Javascript
js利用Array.splice实现Array的insert/remove
Jan 13 Javascript
Extjs Ajax 乱码问题解决方案
Apr 15 Javascript
jquery 批量上传图片实现代码
Jan 28 Javascript
利用谷歌地图API获取点与点的距离的js代码
Oct 11 Javascript
向左滚动文字 js代码效果
Aug 17 Javascript
jQuery如何封装输入框插件
Aug 19 Javascript
Ionic2系列之使用DeepLinker实现指定页面URL
Nov 21 Javascript
Vue2.0 从零开始_环境搭建操作步骤
Jun 14 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
Nov 06 Javascript
从零开始在vue-cli4配置自适应vw布局的实现
Jun 08 Javascript
ES6 解构赋值的原理及运用
May 25 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下通过POST还是GET来传值
2008/06/05 PHP
简单的PHP多图上传小程序代码
2011/07/17 PHP
php获取服务器信息的实现代码
2013/02/04 PHP
PHP共享内存使用与信号控制实例分析
2018/05/09 PHP
JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
2010/01/12 Javascript
JS文字球状放大效果代码分享
2015/08/19 Javascript
prototype框架中美元符号$用法分析
2016/01/22 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
2016/01/26 Javascript
详解Node.js包的工程目录与NPM包管理器的使用
2016/02/16 Javascript
jQuery使用$.each遍历json数组的简单实现方法
2016/04/18 Javascript
深入浅析JavaScript中数据共享和数据传递
2016/04/25 Javascript
Bootstrap Table表格一直加载(load)不了数据的快速解决方法
2016/09/17 Javascript
node+express制作爬虫教程
2016/11/11 Javascript
关于JS Lodop打印插件打印Bootstrap样式错乱问题的解决方案
2016/12/23 Javascript
JS同步、异步、延迟加载的方法
2018/05/05 Javascript
AngularJS实现的自定义过滤器简单示例
2019/02/02 Javascript
vue中改变滚动条样式的方法
2020/03/03 Javascript
Angular利用HTTP POST下载流文件的步骤记录
2020/07/26 Javascript
element-ui点击查看大图的方法示例
2020/12/14 Javascript
[00:56]PWL开团时刻DAY8——追追追追追!
2020/11/09 DOTA
Python调用ctypes使用C函数printf的方法
2017/08/23 Python
python 遍历目录(包括子目录)下所有文件的实例
2018/07/11 Python
python实现串口自动触发工作的示例
2019/07/02 Python
Python爬虫使用浏览器cookies:browsercookie过程解析
2019/10/22 Python
Django实现分页显示效果
2019/10/31 Python
利用HTML5实现使用按钮控制背景音乐开关
2015/09/21 HTML / CSS
英国家喻户晓的折扣商场:TK Maxx
2017/05/26 全球购物
妇产医师自荐信
2014/01/29 职场文书
环保建议书500字
2014/05/14 职场文书
大学生应聘导游自荐信
2014/06/02 职场文书
分家协议书范本
2016/03/22 职场文书
2016年小学“我们的节日·中秋节”活动总结
2016/04/05 职场文书
财务年终工作总结大全
2019/06/20 职场文书
2019银行员工个人工作自我鉴定
2019/06/27 职场文书
PHP实现考试倒计时功能代码
2021/04/16 PHP
Django中session进行权限管理的使用
2021/07/09 Python