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 相关文章推荐
客户端 使用XML DOM加载json数据的方法
Sep 28 Javascript
通过javascript把图片转化为字符画
Oct 24 Javascript
document.write的几点使用心得
May 14 Javascript
JavaScript用JQuery呼叫Server端方法示例代码
Sep 03 Javascript
推荐一个自己用的封装好的javascript插件
Jan 29 Javascript
使用jQuery判断Div是否在可视区域的方法 判断div是否可见
Feb 17 Javascript
JavaScript“尽快失败”的原则实例详解
Oct 08 Javascript
vue2实现可复用的轮播图carousel组件详解
Nov 27 Javascript
使用JS获取SessionStorage的值
Jan 12 Javascript
微信小程序 导入图标实现过程详解
Oct 11 Javascript
vue Cli 环境删除与重装教程 - 版本文档
Sep 11 Javascript
vue使用echarts画组织结构图
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
PHP利用COM对象访问SQLServer、Access
2006/10/09 PHP
如何判断php数组的维度
2013/06/10 PHP
ThinkPHP3.1新特性之对页面压缩输出的支持
2014/06/19 PHP
PHP中的output_buffering详细介绍
2014/09/27 PHP
php并发加锁问题分析与设计代码实例讲解
2021/02/26 PHP
用js判断用户浏览器是否是XP SP2的IE6
2007/03/08 Javascript
jQuery bxCarousel实现图片滚动切换效果示例代码
2013/05/15 Javascript
JQuery判断子iframe何时加载完成解决方案
2013/08/20 Javascript
js获取IFRAME当前的URL的方法
2013/11/13 Javascript
JS将数字转换成三位逗号分隔的样式(示例代码)
2014/02/19 Javascript
javascript简单实现等比例缩小图片的方法
2016/07/27 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
2016/12/01 Javascript
用move.js库实现百叶窗特效
2017/02/08 Javascript
JS实现的随机排序功能算法示例
2017/06/09 Javascript
vue 封装自定义组件之tabal列表编辑单元格组件实例代码
2017/09/07 Javascript
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
2019/03/14 Javascript
JavaScript 实现HTML DOM增删改查操作的常见方法详解
2020/01/04 Javascript
Python中模拟enum枚举类型的5种方法分享
2014/11/22 Python
启动targetcli时遇到错误解决办法
2017/10/26 Python
Python之web模板应用
2017/12/26 Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
2018/04/09 Python
Python3.6.2调用ffmpeg的方法
2019/01/10 Python
Python基础之函数的定义与使用示例
2019/03/23 Python
python PIL/cv2/base64相互转换实例
2020/01/09 Python
python各层级目录下import方法代码实例
2020/01/20 Python
Python如何对齐字符串
2020/07/30 Python
使用spring mvc+localResizeIMG实现HTML5端图片压缩上传的功能
2016/12/16 HTML / CSS
英国翻新电子产品购物网站:Tech Trade
2017/12/25 全球购物
生态养殖创业计划书
2014/05/06 职场文书
母亲节演讲稿
2014/05/27 职场文书
教师师德考核自我评价
2014/09/13 职场文书
群众路线教育实践活动自我剖析思想汇报
2014/10/04 职场文书
个人债务授权委托书
2014/10/17 职场文书
2015年资料员工作总结
2015/04/25 职场文书
运动员加油词
2015/07/18 职场文书
2016五一手机促销广告语
2016/01/28 职场文书