zoukankan      html  css  js  c++  java
  • ExtJs--15--Ext.is*各种类型推断的方法,简单看源代码就能够明确了

            /**
             * Returns true if the passed value is empty, false otherwise. The value is deemed to be empty if it is either:
             *
             * - `null`
             * - `undefined`
             * - a zero-length array
             * - a zero-length string (Unless the `allowEmptyString` parameter is set to `true`)
             *
             * @param {Object} value The value to test
             * @param {Boolean} allowEmptyString (optional) true to allow empty strings (defaults to false)
             * @return {Boolean}
             * @markdown
             */
            isEmpty: function(value, allowEmptyString) {
                return (value === null) || (value === undefined) || (!allowEmptyString ? value === '' : false) || (Ext.isArray(value) && value.length === 0);
            },
    
            /**
             * Returns true if the passed value is a JavaScript Array, false otherwise.
             *
             * @param {Object} target The target to test
             * @return {Boolean}
             * @method
             */
            isArray: ('isArray' in Array) ? Array.isArray : function(value) {
                return toString.call(value) === '[object Array]';
            },
    
            /**
             * Returns true if the passed value is a JavaScript Date object, false otherwise.
             * @param {Object} object The object to test
             * @return {Boolean}
             */
            isDate: function(value) {
                return toString.call(value) === '[object Date]';
            },
    
            /**
             * Returns true if the passed value is a JavaScript Object, false otherwise.
             * @param {Object} value The value to test
             * @return {Boolean}
             * @method
             */
            isObject: (toString.call(null) === '[object Object]') ?
            function(value) {
                // check ownerDocument here as well to exclude DOM nodes
                return value !== null && value !== undefined && toString.call(value) === '[object Object]' && value.ownerDocument === undefined;
            } :
            function(value) {
                return toString.call(value) === '[object Object]';
            },
    
            /**
             * @private
             */
            isSimpleObject: function(value) {
                return value instanceof Object && value.constructor === Object;
            },
            /**
             * Returns true if the passed value is a JavaScript 'primitive', a string, number or boolean.
             * @param {Object} value The value to test
             * @return {Boolean}
             */
            isPrimitive: function(value) {
                var type = typeof value;
    
                return type === 'string' || type === 'number' || type === 'boolean';
            },
    
            /**
             * Returns true if the passed value is a JavaScript Function, false otherwise.
             * @param {Object} value The value to test
             * @return {Boolean}
             * @method
             */
            isFunction:
            // Safari 3.x and 4.x returns 'function' for typeof <NodeList>, hence we need to fall back to using
            // Object.prototype.toString (slower)
            (typeof document !== 'undefined' && typeof document.getElementsByTagName('body') === 'function') ? function(value) {
                return toString.call(value) === '[object Function]';
            } : function(value) {
                return typeof value === 'function';
            },
    
            /**
             * Returns true if the passed value is a number. Returns false for non-finite numbers.
             * @param {Object} value The value to test
             * @return {Boolean}
             */
            isNumber: function(value) {
                return typeof value === 'number' && isFinite(value);
            },
    
            /**
             * Validates that a value is numeric.
             * @param {Object} value Examples: 1, '1', '2.34'
             * @return {Boolean} True if numeric, false otherwise
             */
            isNumeric: function(value) {
                return !isNaN(parseFloat(value)) && isFinite(value);
            },
    
            /**
             * Returns true if the passed value is a string.
             * @param {Object} value The value to test
             * @return {Boolean}
             */
            isString: function(value) {
                return typeof value === 'string';
            },
    
            /**
             * Returns true if the passed value is a boolean.
             *
             * @param {Object} value The value to test
             * @return {Boolean}
             */
            isBoolean: function(value) {
                return typeof value === 'boolean';
            },
    
            /**
             * Returns true if the passed value is an HTMLElement
             * @param {Object} value The value to test
             * @return {Boolean}
             */
            isElement: function(value) {
                return value ? value.nodeType === 1 : false;
            },
    
            /**
             * Returns true if the passed value is a TextNode
             * @param {Object} value The value to test
             * @return {Boolean}
             */
            isTextNode: function(value) {
                return value ? value.nodeName === "#text" : false;
            },
    
            /**
             * Returns true if the passed value is defined.
             * @param {Object} value The value to test
             * @return {Boolean}
             */
            isDefined: function(value) {
                return typeof value !== 'undefined';
            },
    
            /**
             * Returns true if the passed value is iterable, false otherwise
             * @param {Object} value The value to test
             * @return {Boolean}
             */
            isIterable: function(value) {
                var type = typeof value,
                    checkLength = false;
                if (value && type != 'string') {
                    // Functions have a length property, so we need to filter them out
                    if (type == 'function') {
                        // In Safari, NodeList/HTMLCollection both return "function" when using typeof, so we need
                        // to explicitly check them here.
                        if (Ext.isSafari) {
                            checkLength = value instanceof NodeList || value instanceof HTMLCollection;
                        }
                    } else {
                        checkLength = true;
                    }
                }
                return checkLength ? value.length !== undefined : false;
            }

  • 相关阅读:
    使用 JavaScript 将 Silverlight 添加到网页
    网络和通信 Silverlight 中的 HTTP 通信和安全
    在Silverlight中访问Web服务 为 Silverlight 客户端生成服务
    图形三维效果
    关键帧动画
    ajax.dll 与 ajaxpro.dll的用法[摘自网络]
    FlashObject.js去虚框、传参数、获取URL参数
    WEB标准之CSS: 打造自己的重置样式reset.css[转]
    jquery.cookie.js[保存]
    FCKeditor在.net中详细配置[摘自网络]
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4296435.html
Copyright © 2011-2022 走看看