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 相关文章推荐
HTML 自动伸缩的表格Table js实现
Apr 01 Javascript
jQuery 名称冲突的解决方法
Apr 08 Javascript
学习从实践开始之jQuery插件开发 对话框插件开发
Apr 26 Javascript
纯CSS3代码实现滑动开关效果
Aug 19 Javascript
JavaScript中利用各种循环进行遍历的方式总结
Nov 10 Javascript
JQuery实现的按钮倒计时效果
Dec 23 Javascript
实例讲解jQuery中对事件的命名空间的运用
May 24 Javascript
Angular表单验证实例详解
Oct 20 Javascript
es7学习教程之fetch解决异步嵌套问题的方法示例
Jul 21 Javascript
jQuery 实现鼠标画框并对框内数据选中的实例代码
Aug 29 jQuery
AngularJS实现表单元素值绑定操作示例
Oct 11 Javascript
vue axios重复点击取消上一次请求封装的方法
Jun 19 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+MYSQL中文乱码问题
2015/07/01 PHP
基于PHP的登录和注册的功能的实现
2020/08/06 PHP
日期函数扩展类Ver0.1.1
2006/09/07 Javascript
js更优雅的兼容
2010/08/12 Javascript
IE6下js通过css隐藏select的一个bug
2010/08/16 Javascript
jquery实现输入框动态增减的实例代码
2013/07/14 Javascript
在百度知道团队中快速审批新成员的js脚本
2014/02/02 Javascript
js的延迟执行问题分析
2014/06/23 Javascript
浅谈jquery.fn.extend与jquery.extend区别
2015/07/13 Javascript
jquery实现全屏滚动
2015/12/28 Javascript
jQuery验证插件validate使用方法详解
2020/09/13 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
2016/09/16 Javascript
浅谈jQuery效果函数
2016/09/16 Javascript
jQuery Ajax实现跨域请求
2017/01/21 Javascript
Bootstrap table简单使用总结
2017/02/15 Javascript
angular.js实现购物车功能
2017/10/23 Javascript
BootStrap TreeView使用实例详解
2017/11/01 Javascript
在一个页面实现两个zTree联动的方法
2017/12/20 Javascript
Swiper自定义分页器使用详解
2017/12/28 Javascript
浅谈vuejs实现数据驱动视图原理
2018/02/23 Javascript
Vue 父子组件的数据传递、修改和更新方法
2018/03/01 Javascript
js计算两个时间差 天 时 分 秒 毫秒的代码
2019/05/21 Javascript
ES6基础之 Promise 对象用法实例详解
2019/08/22 Javascript
[48:28]完美世界DOTA2联赛循环赛FTD vs Magma第二场 10月30日
2020/10/31 DOTA
Tensorflow分类器项目自定义数据读入的实现
2019/02/05 Python
Python用Try语句捕获异常的实例方法
2019/06/26 Python
python的移位操作实现详解
2019/08/21 Python
使用HTML5拍照示例代码
2013/08/06 HTML / CSS
蔬菜基地的创业计划书
2014/01/06 职场文书
建筑公司员工自我鉴定
2014/04/08 职场文书
中秋手机店促销方案
2014/06/16 职场文书
2014年团员学习十八大思想汇报
2014/09/13 职场文书
董事长助理岗位职责
2015/02/11 职场文书
用javascript制作qq注册动态页面
2021/04/14 Javascript
使用MybatisPlus打印sql语句
2022/04/22 SQL Server
uniapp开发打包多端应用完整方法指南
2022/12/24 Javascript