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中的this关键字介绍与使用实例
Jun 21 Javascript
JS批量修改PS中图层名称的方法
Jan 26 Javascript
jquery插件之定时查询待处理任务数量
May 01 Javascript
JQuery实现防止退格键返回的方法
Feb 12 Javascript
Javascript闭包(Closure)详解
May 05 Javascript
JavaScript实现图片轮播的方法
Jul 31 Javascript
Bootstrap进度条组件知识详解
May 01 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
Dec 13 Javascript
vue组件挂载到全局方法的示例代码
Aug 02 Javascript
你了解vue3.0响应式数据怎么实现吗
Jun 07 Javascript
VUE 动态组件的应用案例分析
Dec 02 Javascript
JavaScript交换变量的常用方法小结【4种方法】
May 07 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
Apache+php+mysql在windows下的安装与配置图解(最新版)
2008/11/30 PHP
用PHP实现读取和编写XML DOM代码
2010/04/07 PHP
教你识别简单的免查杀PHP后门
2015/09/13 PHP
如何使用PHP Embed SAPI实现Opcodes查看器
2015/11/10 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
2018/08/15 PHP
jQuery使用手册之一
2007/03/24 Javascript
Prototype Date对象 学习
2009/07/12 Javascript
图片在浏览器中底部对齐 解决方法之一
2011/11/30 Javascript
jQuery获取和设置表单元素的方法
2014/02/14 Javascript
自己封装的javascript事件队列函数版
2014/06/12 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
2015/03/24 Javascript
javascript实现继承的简单实例
2015/07/26 Javascript
基于javascript实现图片左右切换效果
2016/01/25 Javascript
javaScript语法总结
2016/11/25 Javascript
localStorage的黑科技-js和css缓存机制
2017/02/06 Javascript
JS批量替换内容中关键词为超链接
2017/02/20 Javascript
JavaScript怎样在删除前添加确认弹出框?
2019/05/27 Javascript
vue中父子组件传值,解决钩子函数mounted只运行一次的操作
2020/07/27 Javascript
vue.js页面加载执行created,mounted的先后顺序说明
2020/11/07 Javascript
swiperjs实现导航与tab页的联动
2020/12/13 Javascript
使用js原生实现年份轮播选择效果实例
2021/01/12 Javascript
vue 根据选择的月份动态展示日期对应的星期几
2021/02/06 Vue.js
[47:55]Ti4第二日主赛事败者组 NaVi vs EG 1
2014/07/20 DOTA
python实现感知器算法(批处理)
2019/01/18 Python
Python进阶:生成器 懒人版本的迭代器详解
2019/06/29 Python
Django中间件基础用法详解
2019/07/18 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
2020/08/04 Python
flask项目集成swagger的方法
2020/12/09 Python
Luxplus荷兰:以会员价购买美容产品等,独家优惠
2019/08/30 全球购物
电子商务毕业生求职信
2013/11/10 职场文书
分公司经理岗位职责
2013/11/11 职场文书
电子商务自荐书范文
2014/01/04 职场文书
《最佳路径》教学反思
2014/04/13 职场文书
我的教育故事演讲稿
2014/05/04 职场文书
表扬信格式模板
2015/05/05 职场文书
Java数组与堆栈相关知识总结
2021/06/29 Java/Android