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 相关文章推荐
JS小功能(操作Table--动态添加删除表格及数据)实现代码
Nov 28 Javascript
针对初学者的jQuery入门指南
Aug 15 Javascript
Jquery幻灯片特效代码分享--鼠标点击按钮时切换(1)
Aug 15 Javascript
详解JavaScript对象和数组
Dec 03 Javascript
运用js教你轻松制作html音乐播放器
Apr 17 Javascript
深入理解选择框脚本[推荐]
Dec 13 Javascript
Bootstrap进度条学习使用
Feb 09 Javascript
轻量级JS Cookie插件js-cookie的使用方法
Mar 22 Javascript
你点的 ES6一些小技巧,请查收
Apr 25 Javascript
解决vue打包后vendor.js文件过大问题
Jul 03 Javascript
layui 阻止图片上传的实例(before方法)
Sep 26 Javascript
vue-next/runtime-core 源码阅读指南详解
Oct 25 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实现用户认证及管理完全源码
2007/03/11 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
Avengerls vs KG BO3 第二场2.18
2021/03/10 DOTA
JavaScript中的null和undefined解析
2012/04/14 Javascript
js播放wav文件(源码)
2013/04/22 Javascript
jquery判断小数点两位和自动删除小数两位后的数字
2014/03/19 Javascript
JavaScript中的toUTCString()方法使用详解
2015/06/12 Javascript
JavaScript中的Math.LOG2E属性使用详解
2015/06/14 Javascript
jQuery获得字体颜色16位码的方法
2016/02/20 Javascript
javascript插件开发的一些感想和心得
2016/02/28 Javascript
js实现table添加行tr、删除行tr、清空行tr的简单实例
2016/10/15 Javascript
浅谈Vue.js中的v-on(事件处理)
2017/09/05 Javascript
Vue组件间通信 Vuex的用法解析
2019/08/05 Javascript
nodejs一个简单的文件服务器的创建方法
2019/09/13 NodeJs
[00:32]2018DOTA2亚洲邀请赛Newbee出场
2018/04/03 DOTA
python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
2014/06/09 Python
python字典多条件排序方法实例
2014/06/30 Python
python生成器,可迭代对象,迭代器区别和联系
2018/02/04 Python
python实现教务管理系统
2018/03/12 Python
python调用百度语音识别实现大音频文件语音识别功能
2018/08/30 Python
python使用webdriver爬取微信公众号
2018/08/31 Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
2018/12/04 Python
在python中以相同顺序shuffle两个list的方法
2018/12/13 Python
django中ORM模型常用的字段的使用方法
2019/03/05 Python
利用python list完成最简单的DB连接池方法
2019/08/09 Python
Kathmandu英国网站:新西兰户外运动品牌
2017/03/27 全球购物
函授自我鉴定
2013/11/06 职场文书
好军嫂事迹材料
2014/01/15 职场文书
会议开场欢迎词
2014/01/15 职场文书
十岁生日家长答谢词
2014/01/17 职场文书
2014年清明节寄语
2014/04/03 职场文书
民主生活会对照检查材料范文
2014/10/01 职场文书
医院科室评语
2015/01/04 职场文书
优秀团员主要事迹材料
2015/11/05 职场文书
农村房屋租赁合同(范本)
2019/07/23 职场文书
Java Kafka 消费积压监控的示例代码
2021/07/01 Java/Android