OSDN Git Service

Version 0.6.133, fix for closure compiler - ADVANCED_OPTIMIZATIONS
[pettanr/clientJs.git] / 0.6.x / js / 01_core / 03_XType.js
index 28c100a..fdf181c 100644 (file)
@@ -1,3 +1,36 @@
+var\r
+       /**\r
+        * Array か?判定する。argumnets 等のフェイク Array は false なので注意。\r
+        * @funciton\r
+        * @alias X.Type._isArray\r
+        */\r
+       X_Type_isArray =\r
+               new Function( 'v',\r
+                       X_UA[ 'IE' ] < 5.5 || X_UA[ 'NetFront' ] < 4 ? // netfront3.4 は html に  instanceof をすると error になる\r
+                               'return v&&v.push===Array.prototype.push' : // win ie5-, MacIE5.2\r
+                       X_UA[ 'IE' ] ?\r
+                               'return v&&Object.prototype.toString.call(v)==="[object Array]"' :\r
+                               'return v instanceof Array'\r
+               ),\r
+\r
+       /**\r
+        * HTMLElement か?判定する。ちなみに return v instanceof Element は ie8 でエラー。\r
+        * @funciton\r
+        * @alias X.Type.isHTMLElement\r
+        */\r
+       X_Type_isHTMLElement =\r
+               new Function( 'v',\r
+                       ( X_UA[ 'IE4' ] || X_UA[ 'MacIE' ] ) ?\r
+                               'return v&&v.tagName&&v.insertAdjacentHTML&&true' : // ie4 or MacIE5.23, v.all <- error\r
+                       X_UA[ 'NetFront' ] < 4 ?\r
+                               'return v&&v.nodeType===1' : // instanceof not a function. netfront3.4 は html に  instanceof をすると error になる\r
+                       window[ 'HTMLElement' ] ?\r
+                               'return v instanceof HTMLElement' :\r
+                               'return v&&v.appendChild&&v.nodeType===1'\r
+               );\r
+\r
+\r
+\r
 /**\r
  * http://pettanr.sourceforge.jp/test/type.html\r
  * ビルトイン方の判定に使用する関数を集めたもの。ブラウザのネイティブな判定関数には不可解な挙動があるので、X.Type を使用するほうがよい。\r
  * @namespace X.Type\r
  * @alias X.Type\r
  */\r
-X.Type = {\r
+X[ 'Type' ] = {\r
+       'isObject'      : X_Type_isObject,\r
+       'isFunction'    : X_Type_isFunction,\r
+       'isUnknown'     : X_Type_isUnknown,\r
+       'isArray'       : X_Type_isArray,\r
+       'isBoolean'     : X_Type_isBoolean,\r
+       'isString'      : X_Type_isString,\r
+       'isNumber'      : X_Type_isNumber,\r
+       'isFinite'      : X_Type_isFinite,\r
+       'isNaN'         : X_Type_isNaN,\r
+       'isHTMLElement' : X_Type_isHTMLElement,\r
+       'isImage'       : X_Type_isImage,\r
+       'isNull'        : X_Type_isNull,\r
+       'isUndefined'   : X_Type_isUndefined\r
+};\r
+\r
        /**\r
         * Object か?判定する。typeof null === 'object' に対策済なので null は Object ではない。\r
+        * @alias X.Type.isObject\r
         */\r
-       isObject : function( v ){\r
+       function X_Type_isObject( v ){\r
                return v && typeof v === 'object'; // typeof null === 'object' に対策\r
-       },\r
+       };\r
        /**\r
         * Function か?判定する。\r
+        * @alias X.Type.isFunction\r
         */\r
-       isFunction : function( v ){\r
+       function X_Type_isFunction( v ){\r
                return typeof v === 'function';\r
-       },\r
+       };\r
        /**\r
         * ie の XHR.open 等ビルトインオブジェクトか?判定する。\r
+        * @alias X.Type.isUnknown\r
         */\r
-       isUnknown : function( v ){\r
+       function X_Type_isUnknown( v ){\r
                return typeof v === 'unknown';\r
-       },\r
-       /**\r
-        * Array か?判定する。argumnets 等のファイク Array は false なので注意。\r
-        * @funciton\r
-        */\r
-       isArray :\r
-               new Function( 'v',\r
-                       X_UA.IE < 5.5 || X_UA.NetFront < 4 ? // netfront3.4 は html に  instanceof をすると error になる\r
-                               'return v&&v.push===Array.prototype.push' : // win ie5-, MacIE5.2\r
-                       X_UA.IE ?\r
-                               'return v&&Object.prototype.toString.call(v)==="[object Array]"' :\r
-                               'return v instanceof Array'\r
-               ),\r
+       };\r
+\r
        /**\r
         * 真偽値か?判定する。\r
+        * @alias X.Type.isBoolean\r
         */\r
-       isBoolean : function( v ){\r
+       function X_Type_isBoolean( v ){\r
                return v === true || v === false;\r
-       },\r
+       };\r
        /**\r
         * 文字列か?判定する。\r
+        * @alias X.Type.isString\r
         */\r
-       isString : function( v ){\r
+       function X_Type_isString( v ){\r
                return typeof v === 'string'; // v === v + ''; // 文字列の加算は IE で遅いかも。\r
-       },\r
+       };\r
        /**\r
         * 数値値か?判定する。\r
+        * @alias X.Type.isNumber\r
         */\r
-       isNumber : function( v ){\r
+       function X_Type_isNumber( v ){\r
                return typeof v === 'number'; // v !== v || v + 0 === v;\r
-       },\r
+       };\r
        /**\r
         * finite か?判定する。isFinite( '123' ) === true に対策済。\r
+        * @alias X.Type.isFinite\r
         */\r
-       isFinite : function( v ){\r
+       function X_Type_isFinite( v ){\r
                return typeof v === 'number' && isFinite( v );\r
-       },\r
+       };\r
        /**\r
-        * NaN か?判定する。isNaN( 'NaN' ) === true     に対策済。\r
+        * NaN か?判定する。isNaN( 'NaN' ) === true に対策済。\r
+        * @alias X.Type.isNaN\r
         */\r
-       isNaN : function( v ){\r
+       function X_Type_isNaN( v ){\r
                return v !== v;\r
-       },\r
-       /**\r
-        * HTMLElement か?判定する。\r
-        * @funciton\r
-        */\r
-       isHTMLElement :\r
-               new Function( 'v',\r
-                       ( X_UA.IE4 || X_UA.MacIE ) ?\r
-                               'return v&&v.tagName&&v.insertAdjacentHTML&&true' : // ie4 or MacIE5.23, v.all <- error\r
-                       X_UA.NetFront < 4 ?\r
-                               'return v&&v.nodeType===1' : // instanceof not a function. netfront3.4 は html に  instanceof をすると error になる\r
-                       window[ 'HTMLElement' ] ?\r
-                               'return v instanceof HTMLElement' :\r
-                       //window[ 'Element' ] ?\r
-                       //      'return v instanceof Element' : // error @ie8\r
-                               'return v&&v.appendChild&&v.nodeType===1'\r
-               ),\r
+       };\r
+\r
        \r
        /*\r
         * new Image した場合に HTMLImageElement が作られるブラウザと,そうでないブラウザ(IE8-)がある\r
+        * @alias X.Type.isImage\r
         */     \r
-       isImage :\r
-               function( v ){\r
-                       if( v && v.constructor === window.Image ) return true;\r
-                       if( v && window.HTMLImageElement && v.constructor === window.HTMLImageElement ) return true; // ie6- は constructor が undef、HTMLImageElement が undef なので、HTMLElement の存在確認が必要\r
-                       if( X_UA.WebKit < 525.13 ){ // Safari3-\r
-                               if( v && v.src !== undefined && v.onload !== undefined && X.Type.isNumber( v.height ) && X.Type.isNumber( v.width ) && X.Type.isBoolean( v.complete ) ){\r
-                                       return true;\r
-                               };\r
+       function X_Type_isImage( v ){\r
+               if( v && v.constructor === window.Image ) return true;\r
+               if( v && window.HTMLImageElement && v.constructor === window.HTMLImageElement ) return true; // ie6- は constructor が undef、HTMLImageElement が undef なので、HTMLElement の存在確認が必要\r
+               if( X_UA[ 'WebKit' ] < 525.13 ){ // Safari3-\r
+                       if( v && v.src !== undefined && v.onload !== undefined && X_Type_isNumber( v.height ) && X_Type_isNumber( v.width ) && X_Type_isBoolean( v.complete ) ){\r
+                               return true;\r
                        };\r
-                       return false;\r
-               },\r
+               };\r
+               return false;\r
+       };\r
        /*\r
        isElementCollection : function(v) {\r
                return (Object.prototype.toString.call(v) === "[object HTMLCollection]");\r
@@ -104,16 +134,17 @@ X.Type = {
        */\r
        /**\r
         * Null か?判定する。\r
+        * @alias X.Type.isNull\r
         */\r
-       isNull : function( v ){\r
+       function X_Type_isNull( v ){\r
                return v === null;\r
-       },\r
+       };\r
        /**\r
         * undefined か?判定する。\r
+        * @alias X.Type.isUndefined\r
         */\r
-       isUndefined : function( v ){\r
+       function X_Type_isUndefined( v ){\r
                return v === void 0;\r
-       }\r
-};\r
+       };\r
 \r
 console.log( 'X.Core.Type' );\r