集合类MixedCollection

Ext.onReady(function(){
    
    //6.10 Ext.util.MixedCollection 集合类
    
    //1. add(String key,Object o)向集合加入对象
    var item1 = new Ext.util.MixedCollection();
    var item2 = new Ext.util.MixedCollection();
    var a = {"name":"a"}, b = {"name":"b"};
    item1.add("01",a);
    item1.add("01",b);//覆盖了上面的01key
    
    item2.add("01",a);
    item2.add("02",a);
    item2.add("03",b);
    
    console.info("item1的长度:"+item1.length+";item2的长度:"+item2.length);
    
    //2. addAll()将数组中的对象加入到集合中
    var item3 = new Ext.util.MixedCollection();
    var arr = [];
    arr.push({name:'a'});
    arr.push({name:'b'});
    console.info("item3的长度:"+item3.length);
    item3.addAll(arr);
    console.info("添加数组中的对象后item3的长度:"+item3.length);
    
    //3. clear()移除集合中的对象
    item3.clear();
    console.info("移除集合中的对象后item3的长度:"+item3.length);
    
    //4. clone() 克隆集合
    var col = new Ext.util.MixedCollection();
    col = item2.clone();
    console.info("克隆集合item2后col集合的长度:"+col.length);
    
    //5. 匹配集合中关联对象
    //contains(Obj o) : Boolean; 包含该对象返回true,不然false
    //containsKey(String key) : Boolean
    var c = {"name":"c"};
    console.info("item2中是否存在对象c:"+item2.contains(c));
    console.info("item2中是否存在以02为索引的关联对象:"+item2.containsKey("02"));
    console.info("item2中是否存在以04为索引的关联对象:"+item2.containsKey("04"));
    
    //6. each()迭代集合中的对象调用指定的方法
    item2.each(function(tempObj){
        //tempObj.name = 'newA';
        console.info('经过调用后的名称为:'+tempObj.name);
    });
    
    //7. 获取集合中的对象
    //first()获取第一个对象  get(String/Number key) 根据key获取value
    console.info("items2中第一个对象的name: "+item2.first().name);
    console.info("items2中以03为key对象的name: "+item2.get("03").name);
    
    //8. 其余有用的方法
    
    console.info("item2集合对象的个数是:"+item2.getCount());
    //console.info("指定对象的索引:"+item2.getKey(b));
    console.info("根据对象指定对象的下标:"+item2.indexOf(b));
    console.info("根据索引指定对象的下标:"+item2.indexOfKey('03'));
    
    console.info("根据索引或者下标取的对象:"+item2.get("03").name);
    console.info("根据下标取的对象:"+item2.getAt(2).name);
    console.info("根据索引获取对象:"+item2.getByKey("03").name);
    item2.remove(b);
    item2.removeAt(0);
    //item2.removeAtKey('02');
    console.info("移除b对象后item2的长度:"+item2.getCount());
    //replace() 替换对象
    //item2.replace("02",{"name":"cRep"});
    console.info(item2.get("02").name);
    
    //sort()排序对象
    //sum()对集合进行求和
    
    //9. 该类中的事件
    //add 添加对象触发该事件
    item2.on('add',function(index,o,key){
        console.info("index:"+index+",name:"+o.name+",key:"+key);
    });
    item2.add("zhangsan",{"name":"张三"})
    //clear 清除全部对象时的事件
    //remove 移除指定对象时的事件
    item2.on("remove",function(o,key){
        console.info("移除对象的name:"+o.name+",key:"+key);
    });
    //item2.remove(a);
    //replase 替换对象时的事件
    item2.on('replace',function(key,oldO,newO){
        console.info("old的name:"+oldO.name+",new的name:"+newO.name);
    });
    item2.replace("02",{"name":"ccccc"});
    
    
});
相关文章
相关标签/搜索