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 相关文章推荐
javascript学习笔记(十一) 正则表达式介绍
Jun 20 Javascript
用jquery仿做发微博功能示例
Apr 18 Javascript
使用GruntJS构建Web程序之合并压缩篇
Jun 06 Javascript
js创建对象的方法汇总
Jan 07 Javascript
AngularJS Bootstrap详细介绍及实例代码
Jul 28 Javascript
jQuery日程管理插件fullcalendar使用详解
Jan 07 Javascript
jquery实现的table排序功能示例
Mar 10 Javascript
js禁止Backspace键使浏览器后退的实现方法
Sep 01 Javascript
vue中实现在外部调用methods的方法(推荐)
Feb 08 Javascript
webpack 模块热替换原理
Apr 09 Javascript
javascript前端和后台进行数据交互方法示例
Aug 07 Javascript
Array.filter中如何正确使用Async
Nov 04 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
实用函数9
2007/11/08 PHP
php 从数据库提取二进制图片的处理代码
2009/09/09 PHP
typecho插件编写教程(六):调用接口
2015/05/28 PHP
几个优化WordPress中JavaScript加载体验的插件介绍
2015/12/17 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
2017/02/04 PHP
javascript生成随机大小写字母的方法
2014/02/20 Javascript
Nodejs学习笔记之Global Objects全局对象
2015/01/13 NodeJs
jquery事件绑定解绑机制源码解析
2016/09/19 Javascript
jQuery  ready方法实现原理详解
2016/10/19 Javascript
使用Xcache缓存器加速PHP网站的配置方法
2017/04/22 Javascript
BootStrap Table 后台数据绑定、特殊列处理、排序功能
2017/05/27 Javascript
react系列从零开始_简单谈谈react
2017/07/06 Javascript
nodejs之get/post请求的几种方式小结
2017/07/26 NodeJs
深入理解ES6的迭代器与生成器
2017/08/19 Javascript
ES6中字符串string常用的新增方法小结
2017/11/07 Javascript
让Vue也可以使用Redux的方法
2018/05/23 Javascript
详解如何修改 node_modules 里的文件
2020/05/22 Javascript
js实现盒子移动动画效果
2020/08/09 Javascript
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
2016/12/27 Python
Python读取系统文件夹内所有文件并统计数量的方法
2018/10/23 Python
对python列表里的字典元素去重方法详解
2019/01/21 Python
python  logging日志打印过程解析
2019/10/22 Python
python实现差分隐私Laplace机制详解
2019/11/25 Python
python变量的作用域是什么
2020/05/26 Python
Python Dataframe常见索引方式详解
2020/05/27 Python
python中的错误如何查看
2020/07/08 Python
利用Python发送邮件或发带附件的邮件
2020/11/12 Python
html5图片上传预览示例分享
2014/04/14 HTML / CSS
html5 拖拽及用 js 实现拖拽功能的示例代码
2020/10/23 HTML / CSS
民用住房租房协议书
2014/10/29 职场文书
入党积极分子培养联系人意见
2015/08/12 职场文书
行为习惯主题班会
2015/08/14 职场文书
《珍珠鸟》教学反思
2016/02/16 职场文书
《窃读记》教学反思
2016/02/18 职场文书
高中班主任工作总结(范文)
2019/08/20 职场文书
OpenCV-Python直方图均衡化实现图像去雾
2021/06/07 Python