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 相关文章推荐
Javascript实例教程(19) 使用HoTMetal(4)
Dec 23 Javascript
创建公共调用 jQuery Ajax 带返回值
Aug 01 Javascript
js给页面加style无效果的解决方法
Jan 20 Javascript
jQuery异步验证用户名是否存在示例代码
May 21 Javascript
javascript中几个容易混淆的概念总结
Apr 14 Javascript
实例详解ECMAScript5中新增的Array方法
Apr 05 Javascript
JavaScript接口的实现三种方式(推荐)
Jun 14 Javascript
基于Vuejs实现购物车功能
Aug 02 Javascript
如何解决hover在ie6中的兼容性问题
Dec 15 Javascript
three.js中文文档学习之创建场景
Nov 20 Javascript
vue.js系列中的vue-fontawesome使用
Feb 10 Javascript
使用vue-router切换页面时实现设置过渡动画
Oct 31 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
《OVERLORD》第四季,终于等到你!
2020/03/02 日漫
Laravel 5框架学习之表单验证
2015/04/08 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
2020/04/06 PHP
使用CSS3实现字体颜色渐变的实现
2021/03/09 HTML / CSS
Javascript 刷新全集常用代码
2009/11/22 Javascript
jqeury eval将字符串转换json的方法
2011/01/20 Javascript
jquery 读取页面load get post ajax 四种方式代码写法
2011/04/02 Javascript
javascript管中窥豹 形参与实参浅析
2011/12/17 Javascript
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
2013/01/11 Javascript
获取数组中最大最小值方法js代码(自写)
2013/08/12 Javascript
js实现横向伸展开的二级导航菜单代码
2015/08/28 Javascript
jQuery实现图片轮播效果代码
2016/09/27 Javascript
微信小程序 基础组件与导航组件详细介绍
2017/02/21 Javascript
JS实现获取自定义属性data值的方法示例
2018/12/19 Javascript
对vuex中getters计算过滤操作详解
2019/11/06 Javascript
nodejs开发一个最简单的web服务器实例讲解
2020/01/02 NodeJs
vue使用better-scroll实现滑动以及左右联动
2020/06/30 Javascript
vue项目实现减少app.js和vender.js的体积操作
2020/11/12 Javascript
[41:52]2018DOTA2亚洲邀请赛3月29日小组赛B组Effect VS Secret
2018/03/30 DOTA
Python实现DDos攻击实例详解
2019/02/02 Python
python3实现钉钉消息推送的方法示例
2019/03/14 Python
Python适配器模式代码实现解析
2019/08/02 Python
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
2020/03/09 Python
Numpy中ndim、shape、dtype、astype的用法详解
2020/06/14 Python
Python实现FTP文件定时自动下载的步骤
2020/12/19 Python
HTML5 video循环播放多个视频的方法步骤
2020/08/06 HTML / CSS
Ticketmaster德国票务网站:购买音乐会和体育等门票
2016/11/14 全球购物
业绩考核岗位职责
2014/02/01 职场文书
煤矿安全生产标语
2014/06/06 职场文书
庆六一文艺汇演活动方案
2014/08/26 职场文书
员工激励培训演讲稿
2014/09/16 职场文书
2014年业务工作总结
2014/11/17 职场文书
保研推荐信格式
2015/03/25 职场文书
生产设备维护保养制度
2015/08/06 职场文书
小学教师暑期培训心得体会
2016/01/09 职场文书
bose降噪耳机音能消除人声吗
2022/04/19 数码科技