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调用asp.net 页面后台的实现代码
Apr 27 Javascript
Javascript跨域请求的4种解决方式
Mar 17 Javascript
JavaScript输入邮箱自动提示实例代码
Jan 13 Javascript
禁用JavaScript控制台调试的方法
Mar 07 Javascript
原生的html元素选择器类似jquery选择器
Oct 15 Javascript
js简单实现竖向tab选项卡的方法
May 04 Javascript
浅谈angularJS 作用域
Jul 05 Javascript
纯JS代码实现一键分享功能
Apr 20 Javascript
jQuery 限制输入字符串长度
Jun 20 Javascript
深入理解Javascript中的作用域链和闭包
Apr 25 Javascript
微信小程序button组件使用详解
Jan 31 Javascript
微信小程序学习总结(二)样式、属性、模板操作分析
Jun 04 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
终于听上了直流胆调频
2021/03/02 无线电
PHP4和PHP5共存于一系统
2006/11/17 PHP
对squid中refresh_pattern的一些理解和建议
2009/04/17 PHP
php中获取远程客户端的真实ip地址的方法
2011/08/03 PHP
PHP笔记之:基于面向对象设计的详解
2013/05/14 PHP
PHP上传文件参考配置大文件上传
2015/12/16 PHP
WordPress过滤垃圾评论的几种主要方法小结
2016/07/11 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
2019/10/08 PHP
原生javascript兼容性测试实例
2013/07/01 Javascript
JS实现根据当前文字选择返回被选中的文字
2014/05/21 Javascript
让JavaScript的Alert弹出框失效的方法禁止弹出警告框
2014/09/03 Javascript
javascript实时显示北京时间的方法
2015/03/12 Javascript
javascript实现俄罗斯方块游戏的思路和方法
2015/04/27 Javascript
jQuery倒计时代码(超简单)
2017/02/27 Javascript
原生JS实现不断变化的标签
2017/05/22 Javascript
微信小程序request出现400的问题解决办法
2017/05/23 Javascript
jquery图片放大镜效果
2017/06/23 jQuery
基于Bootstrap框架菜鸟入门教程(推荐)
2017/09/17 Javascript
JS实现倒计时图文效果
2018/11/17 Javascript
详解keep-alive + vuex 让缓存的页面灵活起来
2019/04/19 Javascript
[03:21]【TI9纪实】Old Boys
2019/08/23 DOTA
使用Mixin设计模式进行Python编程的方法讲解
2016/06/21 Python
使用pyecharts无法import Bar的解决方案
2020/04/23 Python
在Python中字典根据多项规则排序的方法
2019/01/21 Python
Python 的字典(Dict)是如何存储的
2019/07/05 Python
Pytorch之Variable的用法
2019/12/31 Python
python读取tif图片时保留其16bit的编码格式实例
2020/01/13 Python
Python 安装 virturalenv 虚拟环境的教程详解
2020/02/21 Python
计算机应用专业毕业生求职信
2013/10/24 职场文书
活动倡议书范文
2014/05/13 职场文书
验房委托书
2014/08/30 职场文书
工程部主管岗位职责
2015/02/12 职场文书
Linux安装Nginx步骤详解
2021/03/31 Servers
基于go interface{}==nil 的几种坑及原理分析
2021/04/24 Golang
Nginx配置Https安全认证的实现
2021/05/26 Servers
简单聊聊TypeScript只读修饰符
2022/04/06 Javascript