【Avalon源码】iterator
function iterator(vars, body, ret) {
var fun = 'for(var ' + vars + 'i=0,n = this.length; i < n; i++){' +
body.replace('_', '((i in this) && fn.call(scope,this[i],i,this))') +
'}' + ret
console.log(fun)
return Function('fn,scope', fun)
}
Array.prototype.forEach = iterator('', '_', '')
Array.prototype.filter = iterator('r=[],j=0,', 'if(_)r[j++]=this[i]', 'return r')
Array.prototype.map = iterator('r=[],', 'r[i]=_', 'return r')
Array.prototype.some = iterator('', 'if(_)return true', 'return false')
Array.prototype.every = iterator('', 'if(!_)return false', 'return true')
var arr = [1,2,3]
arr.forEach(function(value) {
console.log(value)
})
【Avalon源码】iterator的更多相关文章
- 轻量级前端MVVM框架avalon源码分析-总结
距avalon0.7版本发布有一段时间,由于之前的稳定性,就停止一段时间更新,期间研究了下Knockout源码,也尝试写了一个小型的mvvm的实现模型,仅仅只是仿造ko的核心实现,把无关的东西给剥离掉 ...
- avalon源码分析(转)
avalon源码分析目录 第一篇 : 关于前端的MVVM架构 第二篇 : 初步接触 第三篇 : 执行流程1 第四篇 : 执行流程2 第五篇 : 整体架构 第六篇 : ViewModel 第七篇 : ...
- STL源码--iterator和traits编程技法
第一部分 iterator学习 STL iterators定义: 提供一种方法,使之能够依序巡访某个聚合物(容器)所含的各个元素,而又无需暴露该聚合物的内部表达方式. 任何iteartor都应该提供5 ...
- avalon源码阅读(1)
来源 写angularJS源码阅读系列的时候,写的太垃圾了. 一个月后看,真心不忍直视,以后有机会的话得重写. 这次写avalonJS,希望能在代码架构层面多些一点,少上源码.多写思路. avalon ...
- 【avalon源码】
1. document.getElementsByTagName('head')[0] document.head 2. 3. var IEVersion = NaN if (window.VBArr ...
- 【Avalon源码】dateGetter
function dateGetter(name, size, offset, trim) { return function(date) { var value = date["get&q ...
- 【avalon源码】scpCompile
function noop() {} function scpCompile(array) { return Function.apply(noop, array) } // var fn = new ...
- MVVM大比拼之knockout.js源码精析
简介 本文主要对源码和内部机制做较深如的分析,基础部分请参阅官网文档. knockout.js (以下简称 ko )是最早将 MVVM 引入到前端的重要功臣之一.目前版本已更新到 3 .相比同类主要有 ...
- MVVM大比拼之avalon.js源码精析
简介 avalon是国内 司徒正美 写的MVVM框架,相比同类框架它的特点是: 使用 observe 模式,性能高. 将原始对象用object.defineProperty重写,不需要用户像用knoc ...
随机推荐
- spring netty-socket.io
spring-nettysocketio.xml文件内容如下: <?xml version="1.0" encoding="UTF-8"?>< ...
- 【设计模式】常用de单例模式
> 单例模式 单例模式,是常见的设计模式之一,一般来说,是程序员较早接触的模式之一.嘻嘻,包括我~~~ > 分类 一般来说,分两种: 饿汉模式.非常饿嘛,一上来就加载了,所以,就是非延迟加 ...
- Chrome浏览器快捷键大全(新加了其他一些浏览器的独有)
官方快捷键文档: https://support.google.com/chrome/answer/157179?hl=zh-Hans&ref_topic=14676 浏览器标签页和窗口快 ...
- Http 状态码对照表
1xx 消息 1. 100 Continue 2. 101 Switching Protocol 3. 102 Processing 2xx 成功 1. 200 OK ...
- 【springMVC】简单的前后端数据交流
最最常见两种,一则返回视图模板(文档),二则为json数据.就使用一个源代码文件来看看springmvc是怎么做到的. 1.UserController.java源代码文件 (这里额外的使用了fast ...
- java中正则表达式基本用法
正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为 ...
- Java的final关键字
使用final关键字做标识有“最终的”含义 final可以修饰类.方法.属性和变量: 修饰类,则该类不允许被继承(即不能有子类) 修饰方法,则该方法不允许被覆盖(重写) 修饰属性,则该属性不会进行隐形 ...
- XAF学习资源整合大全
近期有很多XAF初学者与我联系,我多数时间在重复很多入门问题,所以决定整理一篇XAF资源列表,方便大家查找资料,也请知晓其他资源的人留言或与我联系,我将新资源追加到本篇文章中,方便更多人. 一.本博客 ...
- const char* && string && String^ 类型转换
const char* && string && String^ 类型转换 const char* ---> string const char * cw= &q ...
- struts(三) ---OGNL的学习和理解
OGNL:Object graphic Navgation Language(对象图形的导航语言)