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 ready()的几种实现方法小结
Jun 18 Javascript
JavaScript判断DOM何时加载完毕的技巧
Nov 11 Javascript
JS图片无缝滚动(简单利于使用)
Jun 17 Javascript
jQuery动态背景图片效果实现方法
Jul 03 Javascript
JavaScript代码轻松实现网页内容禁止复制(代码简单)
Oct 23 Javascript
关于JavaScript限制字数的输入框的那些事
Aug 14 Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
Mar 07 Javascript
Vue 使用 Mint UI 实现左滑删除效果CellSwipe
Apr 27 Javascript
node前端开发模板引擎Jade的入门
May 11 Javascript
Node使用Selenium进行前端自动化操作的代码实现
Oct 10 Javascript
webgl实现物体描边效果的方法介绍
Nov 27 Javascript
Vue绑定用户接口实现代码示例
Nov 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
espresso double下 咖啡粉超细时 饼压力对咖啡的影响
2021/03/03 冲泡冲煮
PHP中error_reporting()函数的用法(修改PHP屏蔽错误)
2011/07/01 PHP
PHP URL路由类实例
2013/11/12 PHP
php一个解析字符串排列数组的方法
2015/05/12 PHP
PHP使用CURL模拟登录的方法
2015/07/08 PHP
PHP实现简单数字分页效果
2015/07/26 PHP
java模拟PHP的pack和unpack类
2016/04/13 PHP
php实现查询功能(数据访问)
2017/05/23 PHP
firefox下frameset取不到值的解决方法
2010/09/06 Javascript
js 点击页面其他地方关闭弹出层(示例代码)
2013/12/24 Javascript
如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
2014/08/03 NodeJs
jQuery 1.9.1源码分析系列(十四)之常用jQuery工具
2015/12/02 Javascript
Vue.js每天必学之数据双向绑定
2016/09/05 Javascript
jQuery插件ajaxFileUpload使用详解
2017/01/10 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
浅谈mint-ui 填坑之路
2017/11/06 Javascript
Vue 组件(component)教程之实现精美的日历方法示例
2018/01/08 Javascript
jQuery幻灯片插件owlcarousel参数说明中文文档
2018/02/27 jQuery
Vue插槽_特殊特性slot,slot-scope与指令v-slot说明
2020/09/04 Javascript
vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作
2020/09/10 Javascript
Python的净值数据接口调用示例分享
2016/03/15 Python
Django实现的自定义访问日志模块示例
2017/06/23 Python
详解 Python 读写XML文件的实例
2017/08/02 Python
python Matplotlib数据可视化(1):简单入门
2020/09/30 Python
HTML5 canvas实现雪花飘落特效
2016/03/08 HTML / CSS
HTML5 语音搜索只需一句代码
2013/01/03 HTML / CSS
Max&Co官网:意大利年轻女性时尚品牌
2017/05/16 全球购物
洛杉矶健身中心女性专用运动服饰品牌:Marika
2018/05/09 全球购物
市政管理求职信范文
2014/05/07 职场文书
消防安全宣传标语
2014/06/07 职场文书
解放思想演讲稿
2014/09/11 职场文书
诉讼授权委托书范本
2014/10/05 职场文书
单位作风建设剖析材料
2014/10/11 职场文书
2014年财务部工作总结
2014/11/11 职场文书
教学反思怎么写
2016/02/24 职场文书
python使用BeautifulSoup 解析HTML
2022/04/24 Python