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 API学Jquery 之二 属性
Apr 09 Javascript
封装好的js判断操作系统与浏览器代码分享
Jan 09 Javascript
基于jQuery实现返回顶部实例代码
Jan 01 Javascript
js实现常用排序算法
Aug 09 Javascript
javascript实现获取图片大小及图片等比缩放的方法
Nov 24 Javascript
JS实现身份证输入框的输入效果
Aug 21 Javascript
ES6 javascript中class类的get与set用法实例分析
Oct 30 Javascript
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
Mar 28 jQuery
jQuery实现的监听导航滚动置顶状态功能示例
Jul 23 jQuery
vue 集成 vis-network 实现网络拓扑图的方法
Aug 07 Javascript
vue动态绘制四分之三圆环图效果
Sep 03 Javascript
使用next.js开发网址缩短服务的方法
Jun 17 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
PHP判断字符串长度的两种方法很实用
2015/09/22 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
php实现的顺序线性表示例
2019/05/04 PHP
PHP手机号码及邮箱正则表达式实例解析
2020/07/11 PHP
使用onbeforeunload属性后的副作用
2007/03/08 Javascript
JQuery动态给table添加、删除行 改进版
2011/01/19 Javascript
制作jquery遮罩层效果导航菜单代码分享
2013/12/25 Javascript
jQuery源码分析之Callbacks详解
2015/03/13 Javascript
jQuery实现html表格动态添加新行的方法
2015/05/28 Javascript
jQuery中prepend()方法使用详解
2015/08/11 Javascript
js实现图片上传并正常显示
2015/12/19 Javascript
Jquery操作cookie记住用户名
2016/03/29 Javascript
javascript读取文本节点方法小结
2016/12/15 Javascript
JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】
2017/01/22 Javascript
nodejs async异步常用函数总结(推荐)
2017/11/17 NodeJs
webpack优化的深入理解
2018/12/10 Javascript
Flutter部件内部状态管理小结之实现Vue的v-model功能
2019/06/11 Javascript
JavaScript随机数的组合问题案例分析
2020/05/16 Javascript
一个超级简单的python web程序
2014/09/11 Python
详解Python中DOM方法的动态性
2015/04/11 Python
python实战教程之自动扫雷
2018/07/13 Python
台湾饭店和机票预订网站:Expedia台湾
2016/08/05 全球购物
老板电器官方购物商城:老板油烟机、燃气灶、消毒柜、电烤箱
2018/05/30 全球购物
英国儿童鞋和靴子:Start-Rite
2019/05/06 全球购物
摩飞电器俄罗斯官方网站:Morphy Richards俄罗斯
2020/07/30 全球购物
大学校庆邀请函
2014/01/11 职场文书
股权转让协议书
2014/04/12 职场文书
小学生关于梦想的演讲稿
2014/08/22 职场文书
学生抄袭作业的检讨书
2014/10/02 职场文书
欢迎新生标语
2014/10/06 职场文书
2014年行政人事工作总结
2014/12/09 职场文书
家属答谢词
2015/01/05 职场文书
公司年夜饭通知
2015/04/25 职场文书
勤俭节约倡议书范文
2015/04/29 职场文书
2015年乡镇平安建设工作总结
2015/05/13 职场文书
HR在给员工开具离职证明时,需要注意哪些问题?
2019/07/03 职场文书