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 相关文章推荐
Prototype Template对象 学习
Jul 19 Javascript
JavaScript浏览器选项卡效果
Aug 25 Javascript
jQuery学习总结之元素的相对定位和选择器(持续更新)
Apr 26 Javascript
JavaScript中的作用域链和闭包
Jun 30 Javascript
js浮点数保留两位小数点示例代码(四舍五入)
Dec 26 Javascript
jquery实现具有嵌套功能的选项卡
Feb 12 Javascript
js实现select二级联动下拉菜单
Apr 17 Javascript
Bootstrap开发实战之响应式轮播图
Jun 02 Javascript
Javascript操作表单实例讲解(下)
Jun 20 Javascript
jQuery实现手机版页面翻页效果的简单实例
Oct 05 Javascript
基于AngularJS的简单使用详解
Sep 10 Javascript
解决vue中el-tab-pane切换的问题
Jul 19 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中strtotime函数使用方法详解
2011/11/27 PHP
PHP操作MongoDB GridFS 存储文件的详解
2013/06/20 PHP
深入解析PHP的Yii框架中的event事件机制
2016/03/17 PHP
PHP convert_uudecode()函数讲解
2019/02/14 PHP
在网站上应该用的30个jQuery插件整理
2011/11/03 Javascript
浅析Cookie中的Path与domain
2013/12/18 Javascript
Node.js 去掉种子(torrent)文件里的邪恶信息
2015/03/27 Javascript
jquery插件orbit.js实现图片折叠轮换特效
2015/04/14 Javascript
javascript实现捕捉键盘上按下的键
2015/05/05 Javascript
javascript实现查找数组中最大值方法汇总
2016/02/13 Javascript
老生常谈遮罩层 滚动条的问题
2016/04/29 Javascript
需要牢记的JavaScript基础知识
2016/09/25 Javascript
原生js实现网易轮播图效果
2020/04/10 Javascript
ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案
2016/11/23 Javascript
jQuery EasyUi 验证功能实例解析
2017/01/06 Javascript
React-router4路由监听的实现
2018/08/07 Javascript
jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
2020/05/29 jQuery
python logging类库使用例子
2014/11/22 Python
Python基础语言学习笔记总结(精华)
2017/11/14 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
2018/02/10 Python
Django url,从一个页面调到另个页面的方法
2019/08/21 Python
使用浏览器访问python写的服务器程序
2019/10/10 Python
两种CSS3伪类选择器详细介绍
2013/12/24 HTML / CSS
澳大利亚电子产品购物网站:Dick Smith
2017/02/02 全球购物
friso美素佳儿官方海外旗舰店:荷兰原产原罐
2017/07/03 全球购物
优衣库美国官网:UNIQLO美国
2018/04/14 全球购物
Myprotein意大利官网:欧洲第一运动营养品牌
2018/11/22 全球购物
阿联酋航空丹麦官方网站:Emirates DK
2019/08/25 全球购物
Lungolivigno Fashion官网:高级时装在线购物
2020/10/17 全球购物
后勤采购员岗位职责
2013/12/19 职场文书
眼镜促销方案
2014/03/15 职场文书
白酒营销策划方案
2014/08/17 职场文书
2014年民主评议党员个人总结
2014/09/24 职场文书
科学育儿宣传标语
2014/10/08 职场文书
《祁黄羊》教学反思
2016/02/20 职场文书
5行Python代码实现一键批量扣图
2021/06/29 Python