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