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的更多相关文章

  1. 轻量级前端MVVM框架avalon源码分析-总结

    距avalon0.7版本发布有一段时间,由于之前的稳定性,就停止一段时间更新,期间研究了下Knockout源码,也尝试写了一个小型的mvvm的实现模型,仅仅只是仿造ko的核心实现,把无关的东西给剥离掉 ...

  2. avalon源码分析(转)

    avalon源码分析目录 第一篇 : 关于前端的MVVM架构 第二篇 : 初步接触 第三篇 : 执行流程1 第四篇 :  执行流程2 第五篇 : 整体架构 第六篇 : ViewModel  第七篇 : ...

  3. STL源码--iterator和traits编程技法

    第一部分 iterator学习 STL iterators定义: 提供一种方法,使之能够依序巡访某个聚合物(容器)所含的各个元素,而又无需暴露该聚合物的内部表达方式. 任何iteartor都应该提供5 ...

  4. avalon源码阅读(1)

    来源 写angularJS源码阅读系列的时候,写的太垃圾了. 一个月后看,真心不忍直视,以后有机会的话得重写. 这次写avalonJS,希望能在代码架构层面多些一点,少上源码.多写思路. avalon ...

  5. 【avalon源码】

    1. document.getElementsByTagName('head')[0] document.head 2. 3. var IEVersion = NaN if (window.VBArr ...

  6. 【Avalon源码】dateGetter

    function dateGetter(name, size, offset, trim) { return function(date) { var value = date["get&q ...

  7. 【avalon源码】scpCompile

    function noop() {} function scpCompile(array) { return Function.apply(noop, array) } // var fn = new ...

  8. MVVM大比拼之knockout.js源码精析

    简介 本文主要对源码和内部机制做较深如的分析,基础部分请参阅官网文档. knockout.js (以下简称 ko )是最早将 MVVM 引入到前端的重要功臣之一.目前版本已更新到 3 .相比同类主要有 ...

  9. MVVM大比拼之avalon.js源码精析

    简介 avalon是国内 司徒正美 写的MVVM框架,相比同类框架它的特点是: 使用 observe 模式,性能高. 将原始对象用object.defineProperty重写,不需要用户像用knoc ...

随机推荐

  1. R绘图基础

    一,布局 R绘图所占的区域,被分成两大部分,一是外围边距,一是绘图区域. 外围边距可使用par()函数中的oma来进行设置.比如oma=c(4,3,2,1),就是指外围边距分别为下边距:4行,左边距3 ...

  2. php无限遍历目录-修正版

    最近在能php目录操作,搞了一个目录无限遍历: 使用的函数有: isset()判断某个变量是否定义 chdir() 将当前目录改变为指定的目录. opendir() 打开目录. readdir()读取 ...

  3. [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:排序、筛选和分页

    这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第三篇:排序.筛选和分页 原文:Sort ...

  4. C#的多态性

    参考网址:http://www.cnblogs.com/zhangkai2237/archive/2012/12/20/2826734.html 多态的定义:同一操作作用于不同的对象,可以有不同的解释 ...

  5. 为ssh增加选项

    在使用ssh的时候,可以看到ssh有很多功能,什么-o , -e等等.如下图 需求,想要给ssh增加一个参数的功能.比如说我现在的需求就是执行ssh的时候可以增加一个选项,给我每次ssh的操作搭一个标 ...

  6. html5 drag and drop

    注:链接.图片默认是draggable的. mousemove在整个拖放的过程中不会被触发. dragStart设置: e.dataTransfer.effectAllowed = "mov ...

  7. 《BI那点儿事》数据流转换——多播、Union All、合并、合并联接

    建立测试数据: CREATE TABLE FactResults ( Name ) , Course ) , Score INT ) INSERT INTO FactResults ( Name , ...

  8. Scrum Meeting 5-20151207

    任务安排 姓名 今日任务 明日任务 困难 董元财 将服务器转移到学校服务器 修复app特定情况下崩溃 无 胡亚坤 学习连接服务器框架 发布界面和购买界面 无 刘猛 在github上分配好任务 写博客 ...

  9. Redis redis-cli常用操作

    一.安装 二.连接 在bin目录下./redis-cli -p port -a password 授权auth password 查看是否连接成功 ping PONG表示连接成功 三.键值相关命令 k ...

  10. js蛋疼的Class(获取class对象)

    之前处理class对象被迫用jquery,以为JavaScript不支持class.确实百度某些大神也说js不待见class对象,就这样本菜放弃了原生js. 今天偶然发现一片文章吐槽jquery拥抱J ...