js 判斷各類數據類型

       瞭解js的都知道, 有個typeof  用來判斷各類數據類型,有兩種寫法:typeof   xxx   ,typeof(xxx)javascript

       以下實例:java

       typeof   2      輸出   number
       typeof   null   輸出   object數組

       typeof   {}    輸出   objectdom

       typeof    []    輸出   object函數

       typeof   (function(){})   輸出  function google

       typeof    undefined         輸出  undefinedspa

       typeof   '222'                 輸出    string firefox

      typeof  true                   輸出     boolean prototype

    這裏麪包含了js裏面的五種數據類型  number   string    boolean   undefined     object和函數類型 function 插件

     看到這裏你確定會問了:我怎麼去區分對象,數組和null呢?

     接下來咱們就用到另一個利器:Object.prototype.toString.call

     這是對象的一個原生原型擴展函數,用來更精確的區分數據類型。

     咱們來試試這個玩兒意兒:

     var   gettype=Object.prototype.toString

        gettype.call('aaaa')        輸出      [object String]

        gettype.call(2222)         輸出      [object Number]

        gettype.call(true)          輸出      [object Boolean]

        gettype.call(undefined)  輸出      [object Undefined]

        gettype.call(null)                  輸出   [object Null]

         gettype.call({})                   輸出   [object Object]

         gettype.call([])                    輸出   [object Array]
         gettype.call(function(){})     輸出   [object Function]

      看到這裏,剛纔的問題咱們解決了。

     constructor也能判斷數據類型:

     如:''.constructor==String    

           [].constructor==Array

           var obj= new Object()   obj.constructor==Object

      其實js 裏面還有好多類型判斷      [object HTMLDivElement]     div 對象  ,    [object HTMLBodyElement]  body 對象    ,[object Document](IE)或者  [object HTMLDocument](firefox,google) ......各類dom節點的判斷,這些東西在咱們寫插件的時候都會用到。

     能夠封裝的方法以下  :

      var   gettype=Object.prototype.toString

     var    utility={

          isObj:function(o){

               return    gettype.call(o)=="[object Object]";

          },

          isArray:function(o){

               return    gettype.call(o)=="[object Array]";

          },

          isNULL:function(o){

               return    gettype.call(o)=="[object Null]";

          },

          isDocument:function(){

                return    gettype.call(o)=="[object Document]"|| [object HTMLDocument];

          }

          ........

    }

    這個獲取類型的方法有個簡單的寫法:

  

var Type = (function() {
				var type = {};
				var typeArr = ['String', 'Object', 'Number', 'Array','Undefined', 'Function', 'Null', 'Symbol'];
				for (var i = 0; i < typeArr.length; i++) {
					(function(name) {
						type['Is' + name] = function(obj) {
							return Object.prototype.toString.call(obj) == '[object ' + name + ']';
						}
					})(typeArr[i]);
				}
				return type;
})();

   

調用方法:Type.IsFunction(function() {})      Type.IsObject({})。。。。。
Type.Is.....

     今天講的內容不是不少,你們對於當前所講的東西有啥要補充的能夠留個言。。。

相關文章
相關標籤/搜索