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中使用A标签获取当前目录的绝对路径方法
Mar 02 Javascript
javascript实现点击单选按钮链接转向对应网址的方法
Aug 12 Javascript
jQuery.trim() 函数及trim()用法详解
Oct 26 Javascript
JavaScript必知必会(三) String .的方法来自何方
Jun 08 Javascript
Vue.2.0.5过渡效果使用技巧
Mar 16 Javascript
iscroll.js滚动加载实例详解
Jul 18 Javascript
Angular.js中数组操作的方法教程
Jul 31 Javascript
JS交互点击WKWebView中的图片实现预览效果
Jan 05 Javascript
原生JS实现多个小球碰撞反弹效果示例
Jan 31 Javascript
jQuery实现为动态添加的元素绑定事件实例分析
Sep 07 jQuery
vue中使用input[type="file"]实现文件上传功能
Sep 10 Javascript
微信小程序用户授权最佳实践指南
May 08 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 生成饼图 三维饼图
2009/09/28 PHP
一个基于PDO的数据库操作类(新) 一个PDO事务实例
2011/07/03 PHP
php实现文件下载简单示例(代码实现文件下载)
2014/03/10 PHP
windows下配置php5.5开发环境及开发扩展
2014/12/25 PHP
PHP贪婪算法解决0-1背包问题实例分析
2015/03/23 PHP
PHP图像裁剪缩略裁切类源码及使用方法
2016/01/07 PHP
原生Js页面滚动延迟加载图片实现原理及过程
2013/06/24 Javascript
javascript删除数组元素并且数组长度减小的简单实例
2014/02/14 Javascript
jquery动画效果学习笔记(8种效果)
2015/11/13 Javascript
JS Array创建及concat()split()slice()的使用方法
2016/06/03 Javascript
angular基于路由控制ui-router实现系统权限控制
2016/09/27 Javascript
json定义及jquery操作json的方法
2016/09/29 Javascript
使用BootStrap实现表格隔行变色及hover变色并在需要时出现滚动条
2017/01/04 Javascript
vue双向绑定简要分析
2017/03/23 Javascript
基于Bootstrap table组件实现多层表头的实例代码
2017/09/07 Javascript
Vue引用第三方datepicker插件无法监听datepicker输入框的值的解决
2018/01/27 Javascript
基于Vue实现拖拽效果
2018/04/27 Javascript
如何优雅的在一台vps(云主机)上面部署vue+mongodb+express项目
2019/01/20 Javascript
微信小程序实现分页加载效果
2020/11/19 Javascript
[01:50]WODOTA制作 DOTA2中文宣传片《HERO》
2013/04/28 DOTA
windows 10下安装搭建django1.10.3和Apache2.4的方法
2017/04/05 Python
Python使用Matplotlib实现雨点图动画效果的方法
2017/12/23 Python
Python爬取qq空间说说的实例代码
2018/08/17 Python
Python对excel文档的操作方法详解
2018/12/10 Python
Python3实现计算两个数组的交集算法示例
2019/04/03 Python
Python3 集合set入门基础
2020/02/10 Python
Django操作session 的方法
2020/03/09 Python
python 瀑布线指标编写实例
2020/06/03 Python
Python图像处理之膨胀与腐蚀的操作
2021/02/07 Python
使用phonegap操作数据库的实现方法
2017/03/31 HTML / CSS
美国高档百货Nordstrom的折扣店:Nordstrom Rack
2017/11/13 全球购物
const char*, char const*, char*const的区别是什么
2014/07/09 面试题
护理个人求职信范文
2014/01/08 职场文书
采购人员的个人自我评价
2014/01/16 职场文书
学校证明范文
2015/06/24 职场文书
Python 多线程之threading 模块的使用
2021/04/14 Python