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 相关文章推荐
Web开发之JavaScript
Mar 29 Javascript
深入解析JavaScript中的变量作用域
Dec 06 Javascript
SpringMVC返回json数据的三种方式
Dec 10 Javascript
js判断移动端是否安装某款app的多种方法
Dec 18 Javascript
jquery动态添加文本并获取值的方法
Oct 12 Javascript
JS绘制微信小程序画布时钟
Dec 24 Javascript
Web 开发中Ajax的Session 超时处理方法
Jan 19 Javascript
vue实现仿淘宝结账页面实例代码
Nov 08 Javascript
浅谈React中组件间抽象
Jan 27 Javascript
浅谈关于JS下大批量异步任务按顺序执行解决方案一点思考
Jan 08 Javascript
jQuery实现评论模块
Aug 19 jQuery
解决Vue+SpringBoot+Shiro跨域问题
Jun 09 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入门之连接mysql数据库的一个类
2012/04/21 PHP
CodeIgniter框架过滤HTML危险代码
2014/06/12 PHP
优化 JavaScript 代码的方法小结
2009/07/16 Javascript
js 变量类型转换常用函数与代码[比较全]
2009/12/01 Javascript
jQuery 点击图片跳转上一张或下一张功能的实现代码
2010/03/12 Javascript
使用js实现数据格式化
2014/12/03 Javascript
深入理解JavaScript系列(50):Function模式(下篇)
2015/03/04 Javascript
javascript实现详细时间提醒信息效果的方法
2015/03/11 Javascript
在AngularJS中使用AJAX的方法
2015/06/17 Javascript
Javascript缓存API
2016/06/14 Javascript
如何使用headjs来管理和异步加载js
2016/11/29 Javascript
js获取一组日期中最近连续的天数
2017/05/25 Javascript
vue+Java后端进行调试时解决跨域问题的方式
2017/10/19 Javascript
微信小程序使用swiper组件实现层叠轮播图
2018/11/04 Javascript
9102年webpack4搭建vue项目的方法步骤
2019/02/20 Javascript
微信小程序实现同一页面取值的方法分析
2019/04/30 Javascript
Jquery实现获取子元素的方法分析
2019/08/24 jQuery
JavaScript代码压缩工具UglifyJS和Google Closure Compiler的基本用法
2020/04/13 Javascript
JS原形与原型链深入详解
2020/05/09 Javascript
微信小程序之高德地图多点路线规划过程示例详解
2021/01/18 Javascript
[50:50]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.20
2020/12/23 DOTA
Python使用plotly绘制数据图表的方法
2017/07/18 Python
Python 私有化操作实例分析
2019/11/21 Python
python通过nmap扫描在线设备并尝试AAA登录(实例代码)
2019/12/30 Python
Python Websocket服务端通信的使用示例
2020/02/25 Python
关于Python turtle库使用时坐标的确定方法
2020/03/19 Python
pytorch 常用函数 max ,eq说明
2020/06/28 Python
Python如何进行时间处理
2020/08/06 Python
Python爬虫实现自动登录、签到功能的代码
2020/08/20 Python
培训讲师邀请函
2014/01/10 职场文书
生产部岗位职责范文
2014/02/07 职场文书
决心书标准格式
2014/03/11 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/09/30 职场文书
2014年幼儿园小班工作总结
2014/12/04 职场文书
JavaScript+HTML实现学生信息管理系统
2021/04/20 Javascript
Vue+Flask实现图片传输功能
2022/04/01 Vue.js