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 在线压缩和格式化收藏
Jan 16 Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
Jan 29 Javascript
javascript实现的淘宝旅行通用日历组件用法实例
Aug 03 Javascript
基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用
May 12 Javascript
js从外部获取图片的实现方法
Aug 05 Javascript
jQuery窗口拖动功能的实现代码
Feb 04 Javascript
JavaScript装饰器函数(Decorator)实例详解
Mar 30 Javascript
JavaScript实现开关等效果
Sep 08 Javascript
Vue递归实现树形菜单方法实例
Nov 06 Javascript
浅谈KOA2 Restful方式路由初探
Mar 14 Javascript
JavaScript实现图片伪异步上传过程解析
Apr 10 Javascript
pnpm对npm及yarn降维打击详解
Aug 05 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
一条久听不愿放下的DIY森海MX500,三言两语话神奇
2021/03/02 无线电
php 生成短网址原理及代码
2014/01/23 PHP
11个PHPer必须要了解的编程规范
2014/09/22 PHP
又拍云异步上传实例教程详解
2016/04/19 PHP
Yii2实现ajax上传图片插件用法
2016/04/28 PHP
php文件上传及下载附带显示文件及目录功能
2017/04/27 PHP
jquery插件制作 手风琴Panel效果实现
2012/08/17 Javascript
基于javascript的JSON格式页面展示美化方法
2014/07/02 Javascript
js中一维数组和二位数组中的几个问题示例说明
2014/07/17 Javascript
JavaScript中5种调用函数的方法
2015/03/12 Javascript
详解AngularJS中的作用域
2015/06/17 Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
2015/12/11 Javascript
JavaScript编写一个简易购物车功能
2016/09/17 Javascript
vue.js 表格分页ajax 异步加载数据
2016/10/18 Javascript
angularjs实现下拉列表的选中事件示例
2017/03/03 Javascript
vue自定义一个v-model的实现代码
2018/06/21 Javascript
小程序的上传文件接口的注意要点解析
2019/09/17 Javascript
使用vue实现通过变量动态拼接url
2020/07/22 Javascript
Vant 中的Toast设置全局的延迟时间操作
2020/11/04 Javascript
如何在Vue项目中添加接口监听遮罩
2021/01/25 Vue.js
python 判断一个进程是否存在
2009/04/09 Python
Python脚本获取操作系统版本信息
2016/12/17 Python
Django开发中的日志输出的方法
2018/07/02 Python
python绘制简单彩虹图
2018/11/19 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
2020/01/21 Python
Python多进程编程常用方法解析
2020/03/26 Python
python中scipy.stats产生随机数实例讲解
2021/02/19 Python
纽约市的奢华内衣目的地:Anya Lust
2019/08/02 全球购物
门卫班长岗位职责
2013/12/15 职场文书
优秀村官事迹材料
2014/01/10 职场文书
2015年技术工作总结范文
2015/04/20 职场文书
二审答辩状格式
2015/05/22 职场文书
小学家庭教育心得体会
2016/01/14 职场文书
2017年寒假社区服务活动总结
2016/04/06 职场文书
Elasticsearch 聚合查询和排序
2022/04/19 Python