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 UI 实现email输入提示实例
Aug 15 Javascript
jquery在项目中做复选框时遇到的一些问题笔记
Nov 17 Javascript
Javascript的严格模式strict mode详细介绍
Jun 06 Javascript
jQuery插件制作之参数用法实例分析
Jun 01 Javascript
基于javascript实现动态时钟效果
Aug 18 Javascript
Bootstrap3 input输入框插入glyphicon图标的方法
May 16 Javascript
Jquery和Js获得元素标签名称的方法总结
Oct 08 Javascript
js复制内容到剪贴板代码,js复制代码的简单实例
Oct 27 Javascript
微信小程序 toast 详解及实例代码
Nov 09 Javascript
angularjs实现首页轮播图效果
Apr 14 Javascript
angular+ionic返回上一页并刷新页面
Aug 08 Javascript
React-Native做一个文本输入框组件的实现代码
Aug 10 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
基于mysql的bbs设计(四)
2006/10/09 PHP
PHP实用函数分享之去除多余的0
2015/02/06 PHP
讲解WordPress开发中一些常用的debug技巧
2015/12/18 PHP
PHP-CGI远程代码执行漏洞分析与防范
2017/05/07 PHP
再谈Yii Framework框架中的事件event原理与应用
2020/04/07 PHP
nginx 设置多个站跨域
2021/03/09 Servers
js null undefined 空区别说明
2010/06/13 Javascript
基于node.js的快速开发透明代理
2010/12/25 Javascript
JavaScript实现快速排序(自已编写)
2012/12/19 Javascript
JS定时刷新页面及跳转页面的方法
2013/07/04 Javascript
javascript中为某个元素指定事件的三种方式
2014/08/07 Javascript
javascript将url中的参数加密解密代码
2014/11/17 Javascript
JavaScript实现select添加option
2015/07/03 Javascript
ztree获取选中节点时不能进入可视区域出现BUG如何解决
2015/12/03 Javascript
卸载安装Node.js与npm过程详解
2016/08/15 Javascript
Bootstrap风格的zTree右键菜单
2017/02/17 Javascript
微信小程序scroll-x失效的完美解决方法
2018/07/18 Javascript
详解angularjs4部署文件过大解决过程
2018/12/05 Javascript
原生js实现trigger方法示例代码
2019/05/22 Javascript
js 闭包深入理解与实例分析
2020/03/19 Javascript
Python解析json文件相关知识学习
2016/03/01 Python
python编程实现归并排序
2017/04/14 Python
Python 实现交换矩阵的行示例
2019/06/26 Python
浅析Python 多行匹配模式
2020/07/24 Python
Python logging日志库空间不足问题解决
2020/09/14 Python
CSS3实现DIV圆角效果完整代码
2012/10/10 HTML / CSS
乌克兰香水和化妆品网站:Notino.ua
2018/03/26 全球购物
世界上第一个创建了罩杯系统的美国内衣品牌:Maidenform
2019/03/23 全球购物
产品工艺师的岗位职责
2013/11/15 职场文书
销售找工作求职信
2013/12/20 职场文书
大学毕业生自荐书怎么写?
2014/01/06 职场文书
生活小常识广播稿
2014/09/16 职场文书
给领导的感谢信范文
2015/01/23 职场文书
业务内勤岗位职责
2015/04/13 职场文书
感恩教育观后感
2015/06/17 职场文书
Redis Cluster 字段模糊匹配及删除
2021/05/27 Redis