angular forEach方法遍历源码解读

 更新时间:2017年01月25日 09:33:38   作者:Sophie_U  
这篇文章主要为大家详细了angular forEach方法遍历源码,forEach()方法用于遍历对象或数组,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 详解AngularJS中的表达式使用

    详解AngularJS中的表达式使用

    这篇文章主要介绍了详解AngularJS中的表达式使用,包括处理数字和字符串等各种对象的操作,需要的朋友可以参考下
    2015-06-06
  • Angular JS 生成动态二维码的方法

    Angular JS 生成动态二维码的方法

    这篇文章主要介绍了Angular JS 生成动态二维码的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • AngularJS安装版本问题解析

    AngularJS安装版本问题解析

    这篇文章主要介绍了AngularJS安装版本问题解析,在这需要注意在安装前请确保自己安装NodeJS环境版本为V18及以上,否则会因node版本问题导致项目无法正常运行,需要的朋友可以参考下
    2024-02-02
  • 浅谈angularJS中的事件

    浅谈angularJS中的事件

    下面小编就为大家带来一篇浅谈angularJS中的事件。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • AngularJs实现聊天列表实时刷新功能

    AngularJs实现聊天列表实时刷新功能

    这篇文章主要介绍了AngularJs实现聊天列表实时刷新功能,需要的朋友可以参考下
    2017-06-06
  • angularjs实现分页和搜索功能

    angularjs实现分页和搜索功能

    这篇文章主要介绍了angularjs实现分页和搜索功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • 浅谈Angularjs link和compile的使用区别

    浅谈Angularjs link和compile的使用区别

    下面小编就为大家带来一篇浅谈Angularjs link和compile的使用区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • 在Angular项目使用socket.io实现通信的方法

    在Angular项目使用socket.io实现通信的方法

    这篇文章主要介绍了在Angular项目使用socket.io实现通信的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Angular中ng-bind和ng-model的区别实例详解

    Angular中ng-bind和ng-model的区别实例详解

    这篇文章主要介绍了Angular中ng-bind和ng-model的区别实例详解的相关资料,需要的朋友可以参考下
    2017-04-04
  • AngularJS ng-bind-html 指令详解及实例代码

    AngularJS ng-bind-html 指令详解及实例代码

    本文主要是对AngularJS ng-bind-html 指令知识的详细讲解,并附代码实例,有需要的小伙伴可以参考下
    2016-07-07

最新评论