zoukankan      html  css  js  c++  java
  • extbase.js中each与iterate方法(转)

    //array:要循环的对象,fn循环处理函数,scope作用域
     each : function(array, fn, scope){
                //如果array中的元素为空,返回,不往下执行
                if(Ext.isEmpty(array, true)){
                    return;
                }
                //如果array不是可迭代对象或者是JavasScript基本类型 string、number、boolean等,就将array放入一个数组中。
                if(!Ext.isIterable(array) || Ext.isPrimitive(array)){
                    array = [array];
                }
                //循环array,执行fn循环函数,回调参数分别为作用域、当前被循环到的数组元素,当前循环到的数组下标、整个数组对象。至于为什么要return 一个 i,原因是如果使用者的目的是 遍历这个array,通过fn函数内部做处理,查找某个符合条件的元素,当找到时,可以return false,就可以退出each循环了,each函数返回的就是找到的元素的下标了。至于使用===是不转换类型比较,即恒等,即左右两边都是false才相等,不相等时不会去转变类型再去比较了。
                for(var i = 0, len = array.length; i < len; i++){
                    if(fn.call(scope || array[i], array[i], i, array) === false){
                        return i;
                    };
                }
            }
    
    
    //Obj:要迭代的对象,fn:循环处理函数,scope:作用域
    iterate : function(obj, fn, scope){
                //如果对象是空对象,那么直接返回,不作处理
                if(Ext.isEmpty(obj)){
                    return;
                }
                //如果对象是可迭代的,那么直接调用each函数
                if(Ext.isIterable(obj)){
                    Ext.each(obj, fn, scope);
                    return;
                }
                //如果对象不可迭代,是一个Object的实例
                else if(typeof obj == 'object'){
                    //遍历obj对象的属性
                    for(var prop in obj){
                        //如果obj含所有的属性在自己本身,不在原型中
                        if(obj.hasOwnProperty(prop)){
                            //执行循环处理fn函数,回调参数分别为作用域,当前属性、当前属性对应的值,obj对象,至于为什么return原因类似each函数,但是它并没有return prop ,可能仅仅是为了减少循环次数,找到需要的就跳出循环吧。
                            if(fn.call(scope || obj, prop, obj[prop], obj) === false){
                                return;
                            };
                        }
                    }
                }
    }
    
    
    


    上面这两个方法,一般数组等集合对象用each,普通对象用iterate
  • 相关阅读:
    PHP Context学习系列《十》
    学习php记录《九》
    学习php记录《八》
    php学习记录《七》
    换到新工作后
    学习php记录《六》
    学习php记录《五》
    学习php记录《四》
    学习php记录《三》
    html基础
  • 原文地址:https://www.cnblogs.com/dwfbenben/p/2447364.html
Copyright © 2011-2022 走看看