认识Ext.js 和Ext-more.js
首先,我们要知道这2个js文件的作用,这俩个文件包含了Ext的一些基础定义、基本的属性和方法,
Ext的apply和applyIf方法:
Ext.onReady(function(){ //Ext.js // Ext.apply() //:就是为对象扩展属性或方法的 var src = {name:'zhangsan',age:30}; //源对象 var config = {name:'lisi',sex:'男'}; //配置对象 //------------------------------------------------ /** Ext.apply(src,config); //name:lisi age:30 sex:男 ,apply:config会覆盖src for(var attr in src){ alert(attr + ':' +src[attr]); } */ //------------------------------------------------- Ext.applyIf(src,config); //name:zhangsa age:30 sex:'男' ,applyIF:config不会覆盖src for(var attr in src){ alert(attr + ':' +src[attr]); } });
//Ext.extend //Ext.typeOf 和原生的javascript typeOf /** var str = '111'; var num = 20; alert(Ext.typeOf(str)); alert(Ext.typeOf(num)); */ // Ext.isArray(); /** var arr = [1,2,3,4]; Ext.iterate(arr,function(item){ alert(item) }); */ //Ext.override Ext.define('User',{ say:function(){ alert('say'); } }); var u = Ext.create('User'); Ext.override(u,{ say:function(){ alert('我是覆盖后的'); } }); u.say(); //--------------------------------------------- //Ext-more.js Ext.getBody()Ext对于原生的javascript对象进行了一些列的扩展,把握好这些扩展,能更深刻体会Ext的架构,这些扩展的js源码在src/core/src/lang目录下,
共7个
ExtJs扩展原生JavaScript
- Ext.Object
- Ext.Number
- Ext.String
- Ext.Array
- Ext.Funtion
- Ext.Date
- Ext.Error
Ext.onReady(function(){ //Ext对于原生javascript对象的扩展 //-------------------------------------------------------- //Ext.Object //----------------------------------------------------- //1:chain 把当前传入的对象 当成新创建对象的原型 /** var obj = { name:'dfsa', age:10 }; var result = Ext.Object.chain(obj); alert(result.name); alert(result.age); alert(result.hasOwnProperty('name')); //alert false */ //------------------------------------------------------- //2:each 遍历当前对象 然后回调函数中暴漏出三个属性key、value、self,如果回调函数返回false停止迭代 /** var obj = { name:'zhangsa111', age:20, sex:'nan' }; Ext.Object.each(obj,function(key,value,self){ alert(key + ':' + value); if(obj.age == 20){ return false; } }); */ //------------------------------------------------------------- //3:fromQueryString( queryString, [recursive] ) /** var str = 'name=dsfa&age=30'; var obj = Ext.Object.fromQueryString(str); alert(Ext.encode(obj)); */ //--------------------------------------------------------- //4:getKey /** var person = { name: 'Jacky', loves: 'food' }; alert(Ext.Object.getKey(person, 'food')); // alerts 'loves' */ //---------------------------------------------------------- //5:toQueryObjects /** var obj = { name:'张三', age:50, fav:{ fav1:'sleep', fav2:'play', fav3:'eat' } }; var arr = Ext.Object.toQueryObjects('user',obj,true); console.info(arr); */ //---------------------------------------------------------- //6:toQueryString /** var obj = { name:'zdsad', age:20 }; var str = Ext.Object.toQueryString(obj); alert(str); //alert name=zdsad&age=20 可以形成查询条件,即http:.../.jsp?name=zdsad&age=20 */ //--------------------------------------------------------------------------- //Ext.Number //1:constrain // alert(Ext.Number.constrain(5,1,20)); //2:randomInt // alert(Ext.Number.randomInt(1,100)); //3:toFixed // alert(Ext.Number.toFixed(3.1415926,4)); //--------------------------------------------------------------------------- //Ext.String // alert(Ext.String.capitalize('edsad')); // alert(Ext.String.ellipsis('www.asdfgh.com',8)); //alert www.a... //--------------------------------------------------------------------------- //Ext.Array //1:clean /** var arr = [1,2,null,3,'']; alert(Ext.Array.clean(arr)); */ //2:difference /** var arr1 = [1,2,3]; var arr2 = [2,5,6]; alert(Ext.Array.difference(arr1,arr2)); */ //3:each /** var arr3 = [1,2,3]; Ext.Array.each(arr3,function(item){ alert(item); if(item >=4){ return false; } }); */ //4:erase 从指定位置开始删除指定数量元素 // var arr = [1,2,3,4,5]; // alert(Ext.Array.erase(arr,2,2)); //alert [1,2,5] //5:every /** var arr = [1,2,5,6,9,10]; var flag = Ext.Array.every(arr,function(item){ if(item >= 7){ return false; }else{ return true; } }); alert(flag); //false */ //6:filter /** var arr = [1,2,5,6,9,10]; var newarr = Ext.Array.filter(arr,function(item){ if(item > 8){ return false; }else{ return true; } }); alert(newarr); //alert [1,2,5,6] */ //7:include /** var arr = [1,2,3,4]; Ext.Array.include(arr,20); alert(arr); //alert [1,2,3,4,20] */ //8:unique /** var arr = ['a',2,3,4,5,6,5,4,3,2,'a','b']; // alert(Ext.Array.unique(arr)); //alert[1,2,3,4,5,6] //利用js对象的特性去掉数组的重复项 利用obj的key是不重复的 var obj = {}; for(var i = 0,len = arr.length; i < len ; i++){ obj[arr[i]] = true; //去掉数组的重复项了 } // alert(Ext.encode(obj)); var uniquearr = []; for(var i in obj){ if(obj.hasOwnProperty(i)){ uniquearr.push(i); } } alert(uniquearr); */ //function alias bind defer //为方法起别名 /** var obj = { name:'dfsafds', say:function(){ alert(this.name); } }; var objsay = Ext.Function.alias(obj,'say'); objsay(); */ //bind 绑定作用域 就相当于call apply /** var color = 'red'; var obj = { color:'blue' }; function showColor(){ alert(this.color); } Ext.Function.bind(showColor,obj)(); */ //defer 类似window.setTimeout /** function task(){ alert('执行'); }; Ext.Function.defer(task,3000); //3秒后执行task */ //------------------------------------------------------------ //Date //between // alert(Ext.Date.between(new Date(2014,07,05),new Date(2014,07,01),new Date(2014,07,09))); //alert true //format // alert(Ext.Date.format(new Date(),'Y-m-d H:i:m')); //parse // alert(Ext.Date.parse('2014-08-09 21:41:09','Y-m-d H:i:m').toLocaleString()); //格式年必须Y,时必须H,大写 //------------------------------------------------------------------ //Ext.Error Ext.Error.raise('you are wrong'); });