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 相关文章推荐
代码生成器 document.write()
Apr 15 Javascript
不安全的常用的js写法
Sep 15 Javascript
jquery 应用代码 方便的排序功能
Feb 06 Javascript
JS数组的赋值介绍
Mar 10 Javascript
javascript实现禁止右键和F12查看源代码
Dec 26 Javascript
jquery使用slideDown实现模块缓慢拉出效果的方法
Mar 27 Javascript
详解javascript中原始数据类型Null和Undefined
Dec 17 Javascript
js用类封装pop弹窗组件
Oct 08 Javascript
Javascript实现运算符重载详解
Apr 07 Javascript
微信小程序云开发之使用云函数
May 17 Javascript
p5.js临摹动态图形的方法
Oct 23 Javascript
React + Threejs + Swiper 实现全景图效果的完整代码
Jun 28 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
一个odbc连mssql分页的类
2006/10/09 PHP
IIS环境下快速安装、配置和调试PHP5.2.0
2006/12/17 PHP
apache mysql php 源码编译使用方法
2012/05/03 PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
2012/07/17 PHP
PHP中使用imagick生成PSD文件缩略图教程
2015/01/26 PHP
php实现的RSS生成类实例
2015/04/23 PHP
PHP中preg_match函数正则匹配的字符串长度问题
2015/05/27 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
2016/09/11 PHP
php实现微信支付之退款功能
2018/05/30 PHP
php和redis实现秒杀活动的流程
2019/07/17 PHP
js loading加载效果实现代码
2009/11/24 Javascript
jquery得到font-size属性值实现代码
2013/09/30 Javascript
node.js中的fs.openSync方法使用说明
2014/12/17 Javascript
Struts2+jquery.form.js实现图片与文件上传的方法
2016/05/05 Javascript
WebView启动支付宝客户端支付失败的问题小结
2017/01/11 Javascript
JavaScript解析JSON格式数据的方法示例
2017/01/24 Javascript
详解如何让InstantClick兼容MathJax、百度统计等
2017/09/12 Javascript
浅谈VUE单页应用首屏加载速度优化方案
2018/08/28 Javascript
elementUI中Table表格问题的解决方法
2018/12/04 Javascript
使用layer.msg 时间设置不起作用的解决方法
2019/09/12 Javascript
使用layer模态框给新页面传值的方法
2019/09/27 Javascript
[03:37]2015国际邀请赛第四日现场精彩集锦
2015/08/08 DOTA
python opencv实现图像边缘检测
2019/04/29 Python
Django通用类视图实现忘记密码重置密码功能示例
2019/12/17 Python
python中with语句结合上下文管理器操作详解
2019/12/19 Python
可自定义箭头样式的CSS3气泡提示框
2016/03/16 HTML / CSS
详解CSS3的box-shadow属性制作边框阴影效果的方法
2016/05/10 HTML / CSS
意大利综合购物网站:Giordano Shop
2016/10/21 全球购物
Petmate品牌官方网站:宠物用品
2018/11/25 全球购物
素食餐饮项目创业计划书
2014/02/02 职场文书
教师专业自荐书范文
2014/02/10 职场文书
车间核算员岗位职责
2014/07/01 职场文书
先进个人总结范文
2015/02/15 职场文书
个性发展自我评价2015
2015/03/09 职场文书
vue-cropper组件实现图片切割上传
2021/05/27 Vue.js
Django路由层如何获取正确的url
2021/07/15 Python