angular forEach方法遍历源码解读


Posted in Javascript onJanuary 25, 2017

angular中提供了forEach()方法用于遍历对象或数组,供大家参考,具体内容如下

function forEach(obj, iterator, context) {
 var key, length;
 if (obj) {
  if (isFunction(obj)) {
   for (key in obj) {
    // Need to check if hasOwnProperty exists,
    // as on IE8 the result of querySelectorAll is an object without a hasOwnProperty function
    if (key != 'prototype' && key != 'length' && key != 'name' && (!obj.hasOwnProperty || obj.hasOwnProperty(key))) {
     iterator.call(context, obj[key], key, obj);
    }
   }
  } else if (isArray(obj) || isArrayLike(obj)) {
   var isPrimitive = typeof obj !== 'object';
   for (key = 0, length = obj.length; key < length; key++) {
    if (isPrimitive || key in obj) {
     iterator.call(context, obj[key], key, obj);
    }
   }
  } else if (obj.forEach && obj.forEach !== forEach) {
    obj.forEach(iterator, context, obj);
  } else if (isBlankObject(obj)) {
   // createMap() fast path --- Safe to avoid hasOwnProperty check because prototype chain is empty
   for (key in obj) {
    iterator.call(context, obj[key], key, obj);
   }
  } else if (typeof obj.hasOwnProperty === 'function') {
   // Slow path for objects inheriting Object.prototype, hasOwnProperty check needed
   for (key in obj) {
    if (obj.hasOwnProperty(key)) {
     iterator.call(context, obj[key], key, obj);
    }
   }
  } else {
   // Slow path for objects which do not have a method `hasOwnProperty`
   for (key in obj) {
    if (hasOwnProperty.call(obj, key)) {
     iterator.call(context, obj[key], key, obj);
    }
   }
  }
 }
 return obj;
}

官方描述:

forEach方法可以遍历数组或对象,函数有三个参数为别为:value,key,obj。
1)、value value指当遍历的对象或数组元素当前的值
2)、 key 是对象属性的的key或者数组的索引
3)、 obj obj即被遍历的对象或数组本身

示例:

var values = {name: 'misko', gender: 'male'};
   var log = [];
   angular.forEach(values, function(value, key) {
    this.push(key + ': ' + value);
   }, log);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery textarea的长度进行验证
May 06 Javascript
JS小游戏之宇宙战机源码详解
Sep 25 Javascript
JavaScript数据类型学习笔记
Jan 25 Javascript
jQuery滚动新闻实现代码
Jun 26 Javascript
基于js实现checkbox批量选中操作
Nov 22 Javascript
详解a标签添加onclick事件的几种方式
Mar 29 Javascript
jquery实现垂直无限轮播的方法分析
Jul 16 jQuery
javascript for循环性能测试示例
Aug 07 Javascript
JS阻止事件冒泡的方法详解
Aug 26 Javascript
vue指令v-html使用过滤器filters功能实例
Oct 25 Javascript
使用JavaScript通过前端发送电子邮件
May 22 Javascript
js判断两个数组相等的5种方法
May 06 Javascript
three.js实现围绕某物体旋转
Jan 25 #Javascript
基于Marquee.js插件实现的跑马灯效果示例
Jan 25 #Javascript
angular和BootStrap3实现购物车功能
Jan 25 #Javascript
jquery 实现复选框的全选操作实例代码
Jan 24 #Javascript
谈谈JavaScript数组常用方法总结
Jan 24 #Javascript
js实现日历的简单算法
Jan 24 #Javascript
JSON键值对序列化和反序列化解析
Jan 24 #Javascript
You might like
jquery下操作HTML控件的实现代码
2010/01/12 Javascript
javascript之典型高阶函数应用介绍
2013/01/10 Javascript
jQuery 借助插件Lavalamp实现导航条动态美化效果
2013/09/27 Javascript
js无刷新操作table的行和列
2014/03/27 Javascript
跟我学Nodejs(三)--- Node.js模块
2014/05/25 NodeJs
JavaScript中的全局对象介绍
2015/01/01 Javascript
node.js操作mysql(增删改查)
2015/07/24 Javascript
使用 JavaScript 进行函数式编程 (一) 翻译
2015/10/02 Javascript
今天抽时间给大家整理jquery和ajax的相关知识
2015/11/17 Javascript
详解Vue爬坑之vuex初识
2017/06/14 Javascript
如何实现双向绑定mvvm的原理实现
2019/05/28 Javascript
JavaScript实现简单计算器功能
2019/12/19 Javascript
分享8个JavaScript库可更好地处理本地存储
2020/10/12 Javascript
vue data有值,但是页面{{}} 取不到值的解决
2020/11/09 Javascript
解决pyqt中ui编译成窗体.py中文乱码的问题
2016/12/23 Python
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
2017/06/23 Python
Pycharm编辑器技巧之自动导入模块详解
2017/07/18 Python
django rest framework 数据的查找、过滤、排序的示例
2018/06/25 Python
python DataFrame 取差集实例
2019/01/30 Python
python3+opencv生成不规则黑白mask实例
2020/02/19 Python
matlab、python中矩阵的互相导入导出方式
2020/06/01 Python
利用python对excel中一列的时间数据更改格式操作
2020/07/14 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
Python基于execjs运行js过程解析
2020/11/27 Python
CSS3悬停效果案例应用
2012/11/21 HTML / CSS
CSS3实现10种Loading效果
2016/07/11 HTML / CSS
Marriott中国:万豪国际酒店查询预订
2016/09/02 全球购物
伦敦平价潮流珠宝首饰品牌:Astrid & Miyu
2016/10/10 全球购物
草莓巧克力:Shari’s Berries
2017/02/07 全球购物
瑞典耳机品牌:URBANISTA
2019/12/03 全球购物
本科生详细的自我评价
2013/09/19 职场文书
管理心得体会
2013/12/28 职场文书
手机促销活动方案
2014/02/05 职场文书
2014小学教师年度考核工作总结
2014/12/03 职场文书
党支部培养考察意见
2015/06/02 职场文书
Java死锁的排查
2022/05/11 Java/Android