angular forEach方法遍历源码解读
angular中提供了forEach()方法用于遍历对象或数组,供大家参考,具体内容如下
functionforEach(obj,iterator,context){ varkey,length; if(obj){ if(isFunction(obj)){ for(keyinobj){ //NeedtocheckifhasOwnPropertyexists, //asonIE8theresultofquerySelectorAllisanobjectwithoutahasOwnPropertyfunction if(key!='prototype'&&key!='length'&&key!='name'&&(!obj.hasOwnProperty||obj.hasOwnProperty(key))){ iterator.call(context,obj[key],key,obj); } } }elseif(isArray(obj)||isArrayLike(obj)){ varisPrimitive=typeofobj!=='object'; for(key=0,length=obj.length;key<length;key++){ if(isPrimitive||keyinobj){ iterator.call(context,obj[key],key,obj); } } }elseif(obj.forEach&&obj.forEach!==forEach){ obj.forEach(iterator,context,obj); }elseif(isBlankObject(obj)){ //createMap()fastpath---SafetoavoidhasOwnPropertycheckbecauseprototypechainisempty for(keyinobj){ iterator.call(context,obj[key],key,obj); } }elseif(typeofobj.hasOwnProperty==='function'){ //SlowpathforobjectsinheritingObject.prototype,hasOwnPropertycheckneeded for(keyinobj){ if(obj.hasOwnProperty(key)){ iterator.call(context,obj[key],key,obj); } } }else{ //Slowpathforobjectswhichdonothaveamethod`hasOwnProperty` for(keyinobj){ if(hasOwnProperty.call(obj,key)){ iterator.call(context,obj[key],key,obj); } } } } returnobj; }
官方描述:
forEach方法可以遍历数组或对象,函数有三个参数为别为:value,key,obj。
1)、valuevalue指当遍历的对象或数组元素当前的值
2)、key是对象属性的的key或者数组的索引
3)、objobj即被遍历的对象或数组本身
示例:
varvalues={name:'misko',gender:'male'}; varlog=[]; angular.forEach(values,function(value,key){ this.push(key+':'+value); },log);
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。