//判断是否为空,可判断空引用、未定义、空数组、空串(在allowBlank为false时) isEmpty : function(v, allowBlank){ return v === null || v === undefined || ((Ext.isArray(v) && !v.length)) || (!allowBlank ? v === '' : false); }
//判断对象是否是数组 toString为Object.prototype.toString 只有通过object的tostring方法 看出一个对象具体的类型 这里不用instanceof来判断类型,是因为如果一个类是Array的子类,通过instanceof也是true的,但是通过toString后是'[obejct object]' ,所以tostring能够精确定位类型。 isArray : function(v){ return toString.apply(v) === '[object Array]'; }
//判断是否是Date类型,Date子类除外 isDate : function(v){ return toString.apply(v) === '[object Date]'; }
//判断是否为Object实例,可以发现extjs的代码也不是特别统一的,上面的方法都是使用了统一声明的 var toString = Object.prototype.toString;而这个又重新写了一遍 “!!”双重否定得到布尔值 isObject : function(v){ return !!v && Object.prototype.toString.call(v) === '[object Object]'; }
//是否是基本数据类型 字符串、数字、布尔值 isPrimitive : function(v){ return Ext.isString(v) || Ext.isNumber(v) || Ext.isBoolean(v); }
//检验对象是否是函数 isFunction : function(v){ return toString.apply(v) === '[object Function]'; }
//检验对象是否是数字 注意:从此方法开始使用了typeof 通过typeof可以判断number,boolean,string,function,object,undefined,而对象是一个object,是无法得到精确类型的 需要使用上面的那种方式 isNumber : function(v){ return typeof v === 'number' && isFinite(v); }
//检验是否是字符串 isString : function(v){ return typeof v === 'string'; }
//检验是否是布尔值 isBoolean : function(v){ return typeof v === 'boolean'; }
//检验是否是页面元素 如果v为空,那么返回false,否则验证v的tagName属性 isElement : function(v) { return v ? !!v.tagName : false; }
//验证对象是否定义 isDefined : function(v){ return typeof v !== 'undefined'; }
判断浏览器类型或平台类型 Ext.isOpera Ext.isWebKit Ext.isChrome Ext.isSafari Ext.isSafari3 Ext.isSafari4 Ext.isSafari2 Ext.isIE Ext.isIE6 Ext.isIE7 Ext.isIE8 Ext.isGecko Ext.isGecko2 Ext.isGecko3 Ext.isBorderBox Ext.isLinux Ext.isWindows Ext.isMac Ext.isAir