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 简练的几个函数
Aug 29 Javascript
从零开始学习jQuery (八) 插播:jQuery实施方案
Feb 23 Javascript
jQuery中使用了document和window哪些属性和方法小结
Sep 13 Javascript
jquery 按键盘上的enter事件
May 11 Javascript
jQuery+HTML5实现弹出创意搜索框层
Dec 29 Javascript
javascript验证香港身份证的格式或真实性
Feb 07 Javascript
基于jquery日历价格、库存等设置插件
Jul 05 jQuery
JS实现的视频弹幕效果示例
Aug 17 Javascript
vue项目设置scrollTop不起作用(总结)
Dec 21 Javascript
如何自定义微信小程序tabbar上边框的颜色
Jul 09 Javascript
js DOM的事件常见操作实例详解
Dec 16 Javascript
Vue实现购物车实例代码两则
May 30 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
用PHPdig打造属于你自己的Google[图文教程]
2007/02/14 PHP
如何用PHP实现插入排序?
2013/04/10 PHP
Zend的MVC机制使用分析(二)
2013/05/02 PHP
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
2014/06/06 PHP
Laravel 4.2 中队列服务(queue)使用感受
2014/10/30 PHP
在Windows系统下使用PHP生成Word文档的教程
2015/07/03 PHP
PHP字典树(Trie树)定义与实现方法示例
2017/10/09 PHP
php压缩文件夹最新版
2018/07/18 PHP
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
2012/12/27 Javascript
原生JavaScript实现连连看游戏(附源码)
2013/11/05 Javascript
jQuery中:first选择器用法实例
2014/12/30 Javascript
jQuery中animate用法实例分析
2015/03/09 Javascript
JavaScript实现广告的关闭与显示效果实例
2015/07/02 Javascript
JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
2016/08/11 Javascript
详解JavaScript常量定义
2017/01/03 Javascript
JS实现自定义弹窗功能
2018/08/08 Javascript
jQuery实现消息弹出框效果
2019/12/10 jQuery
python Django连接MySQL数据库做增删改查
2013/11/07 Python
python处理PHP数组文本文件实例
2014/09/18 Python
详解Python中的静态方法与类成员方法
2017/02/28 Python
flask入门之文件上传与邮件发送示例
2018/07/18 Python
Python后台开发Django的教程详解(启动)
2019/04/08 Python
详解Python 定时框架 Apscheduler原理及安装过程
2019/06/14 Python
django model 条件过滤 queryset.filter(**condtions)用法详解
2020/05/20 Python
Python压缩模块zipfile实现原理及用法解析
2020/08/14 Python
意大利简约的休闲品牌:Aspesi
2018/02/08 全球购物
销售员岗位职责范本
2014/02/03 职场文书
工商管理专业毕业生求职信
2014/05/26 职场文书
党员一帮一活动总结
2014/07/08 职场文书
初中生300字旷课检讨书
2014/11/19 职场文书
邀请函怎么写
2015/01/30 职场文书
高中生打架检讨书1000字
2015/02/17 职场文书
工地食品安全责任书
2015/05/09 职场文书
民事起诉状范文
2015/05/19 职场文书
2019职场单身人才调研报告:互联网行业单身比例最高
2019/08/07 职场文书
Python Pandas 删除列操作
2022/03/16 Python