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中form验证出错信息的查看方法
Oct 08 Javascript
JS交换变量的方法
Jan 21 Javascript
深入理解JavaScript系列(50):Function模式(下篇)
Mar 04 Javascript
借助node实战JSONP跨域实例
Mar 30 Javascript
JavaScript标准对象_动力节点Java学院整理
Jun 27 Javascript
解决html input验证只能输入数字,不能输入其他的问题
Jul 21 Javascript
基于JSON数据格式详解
Aug 31 Javascript
Vue引用第三方datepicker插件无法监听datepicker输入框的值的解决
Jan 27 Javascript
Angular ng-animate和ng-cookies用法详解
Apr 18 Javascript
jQuery实现菜单的显示和隐藏功能示例
Jul 24 jQuery
JavaScript定时器常见用法实例分析
Nov 15 Javascript
Vue开发中遇到的跨域问题及解决方法
Feb 11 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
一个MYSQL操作类
2006/11/16 PHP
PHP 选项及相关信息函数库
2006/12/04 PHP
php中获取指定IP的物理地址的代码(正则表达式)
2011/06/23 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
laravel5.2表单验证,并显示错误信息的实例
2019/09/29 PHP
JavaScript 三种创建对象的方法
2009/10/16 Javascript
键盘 keycode的值 javascript时触发事件时很有用的要素
2009/11/02 Javascript
JavaScript获取多个数组的交集简单实例
2013/11/11 Javascript
js动态控制table的tr、td增加及删除的具体实现
2014/04/30 Javascript
express的中间件bodyParser详解
2014/12/04 Javascript
JavaScript实现标题栏文字轮播效果代码
2015/10/24 Javascript
Javascript类型转换的规则实例解析
2016/02/23 Javascript
Javascript自定义事件详解
2017/01/13 Javascript
Vue的Flux框架之Vuex状态管理器
2017/07/30 Javascript
Angular4实现动态添加删除表单输入框功能
2017/08/11 Javascript
详解如何写出一个利于扩展的vue路由配置
2019/05/16 Javascript
微信小程序 scroll-view 水平滚动实现过程解析
2019/10/12 Javascript
JavaScript 自定义html元素鼠标右键菜单功能
2019/12/02 Javascript
vue实现五子棋游戏
2020/05/28 Javascript
Vue this.$router.push(参数)实现页面跳转操作
2020/09/09 Javascript
vue3弹出层V3Popup实例详解
2021/01/04 Vue.js
JavaScript Html实现移动端红包雨功能页面
2021/01/10 Javascript
Python程序设计入门(1)基本语法简介
2014/06/13 Python
python 读写、创建 文件的方法(必看)
2016/09/12 Python
python创建n行m列数组示例
2019/12/02 Python
django商品分类及商品数据建模实例详解
2020/01/03 Python
python使用多线程查询数据库的实现示例
2020/08/17 Python
利用三角函数在canvas上画虚线的方法
2018/01/11 HTML / CSS
Street One瑞士:德国现代时装公司
2019/10/09 全球购物
宿舍保安职务说明书
2014/02/25 职场文书
大学迎新晚会主持词
2014/03/24 职场文书
空气环保标语
2014/06/12 职场文书
交通安全月活动总结
2015/05/08 职场文书
2015年服务员个人工作总结
2015/05/27 职场文书
谁动了我的奶酪读书笔记
2015/06/30 职场文书
在 SQL 语句中处理 NULL 值的方法
2021/06/07 SQL Server