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 入门级学习笔记及源码
Jan 22 Javascript
判断目标是否是window,document,和拥有tagName的Element的代码
May 31 Javascript
JavaScript 判断日期格式是否正确的实现代码
Jul 04 Javascript
Javascript实现视频轮播在pc端与移动端均可
Sep 29 Javascript
JavaScript实现添加、查找、删除元素
Jul 02 Javascript
浅谈js常用内置方法和对象
Sep 24 Javascript
jQuery easyui datagird编辑行删除行功能的实现代码
Sep 20 jQuery
手淘flexible.js框架使用和源代码讲解小结
Oct 15 Javascript
详解VUE里子组件如何获取父组件动态变化的值
Dec 26 Javascript
详解vue-cli中使用rem,vue自适应
May 06 Javascript
vux-scroller实现移动端上拉加载功能过程解析
Oct 08 Javascript
Js跳出两级循环方法代码实例
Sep 22 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
基于qmail的完整WEBMAIL解决方案安装详解
2006/10/09 PHP
PHP 命令行工具 shell_exec, exec, passthru, system详细使用介绍
2011/09/11 PHP
PHP循环语句笔记(foreach,list)
2011/11/29 PHP
phpStorm2020 注册码
2020/09/17 PHP
JavaScript表单常用验证集合
2008/01/16 Javascript
javaScript 简单验证代码(用户名,密码,邮箱)
2009/09/28 Javascript
理解Javascript_13_执行模型详解
2010/10/20 Javascript
js数组与字符串的相互转换方法
2014/07/09 Javascript
基于socket.io和node.js搭建即时通信系统
2014/07/30 Javascript
Jquery插件实现点击获取验证码后60秒内禁止重新获取
2015/03/13 Javascript
JS中的Replace方法使用经验分享
2015/05/20 Javascript
利用imgareaselect辅助后台实现图片上传裁剪
2017/03/02 Javascript
jQuery Validate 无法验证 chosen-select元素的解决方法
2017/05/17 jQuery
Vue快速实现通用表单验证功能
2019/12/05 Javascript
详解datagrid使用方法(重要)
2020/11/06 Javascript
[03:40]DOTA2英雄梦之声_第01期_炼金术士
2014/06/23 DOTA
[01:47]2018年度DOTA2最佳教练-完美盛典
2018/12/16 DOTA
Python写的Tkinter程序屏幕居中方法
2015/03/10 Python
Python MySQLdb Linux下安装笔记
2015/05/09 Python
Python中的相关分析correlation analysis的实现
2019/08/29 Python
Python3.7安装keras和TensorFlow的教程图解
2020/06/18 Python
关于Python 常用获取元素 Driver 总结
2019/11/24 Python
YUV转为jpg图像的实现
2019/12/09 Python
HTML5全屏(Fullscreen)API详细介绍
2015/04/24 HTML / CSS
宝拉珍选美国官网:Paula’s Choice美国
2018/01/07 全球购物
一套比较完整的软件测试人员面试题
2012/05/13 面试题
日语专业毕业生求职信
2013/12/04 职场文书
好军嫂事迹材料
2014/01/15 职场文书
应届毕业生应聘自荐信范文
2014/02/26 职场文书
《忆江南》教学反思
2014/04/07 职场文书
安全月活动总结
2014/05/05 职场文书
出资证明书范本(标准版)
2014/09/24 职场文书
小班下学期个人总结
2015/02/12 职场文书
Matlab求解数组中的最大值及它所在的具体位置
2021/04/16 Python
golang DNS服务器的简单实现操作
2021/04/30 Golang
JavaScript实现班级抽签小程序
2021/05/19 Javascript