擴展jquery中的工具類方法

在這裏我利用以前封裝好的extend方法來擴展jquery中的工具類的一些方法,好比isNumberic、isArray、type等方法。下面寫的代碼都會在(function(window){ //代碼  })(window)中html

在這裏我建立一個對象(class2type)用於存儲表示數據類型的字符串的小寫格式。jquery

1 var class2type = {};
2 //將下面的字符串按空格分離成字符串數組
3 var strs = "String Boolean Number Function Math Date Array RegExp Objext Undefined Null".split(" ");
4 //遍歷字符串數組,將數組中每一項轉化成小寫格式存到對象中
5 //對象的鍵-值(object str-str.toLowercase)
6 for(var i=0;i<strs.length;i++){
7     var str = str[i];
8     class2type["[object "+str+"]"]=str.toLowerCase();
9 }

我再保存對象的toString方法,易於後面擴展方法的時候的調用:編程

var toString = Object.prototype.toString;

而後就能夠利用extend方法來擴展jquery中的工具類的方法了:數組

 1 itMei.extend({
 2     //判斷參數是不是一個數字方法
 3     isNumberic:function(num){
 4           return typeof num ==="number" && !isNaN(num);
 5     },
 6     //判斷參數是否是一個數組的方法
 7     isArray:function(array){
 8           return Array.isArray(array):itMei.type(array)==="array";
 9     },
10     //檢測內置對象的數據類型的方法,該方法返回的數據類型名稱的小寫格式
11     type:function(arg){
12           var typeName;
13           var temp = toString.call(arg);
14           return class2type[temp];    //用到上面定義好的class2type對象
15     },
16     //判斷一個對象是不是空對象的方法
17     isEmptyObject:function(obj){
18           for(var k in obj){   //若是能進行遍歷,不是空對象
19              return false;
20           }
21           return true;
22     },
23     //拋出異常的方法
24     error:function(msg){
25           throw msg;
26     },
27     //合併數組的方法
28     merge:function(source,target){
29         //將source數組中的元素添加到目標數組target中
30         var j=0;
31         var i = target.length;
32         while(source[j]!==undefined){
33             target[i++] = source[j++];
34         }
35         target.length = i;
36         return target;
37     },
38     //去除字符串首尾空格的方法
39     trim:function(str){
40          return str.trim ? str.trim():str.replace(/^\s+|\s+$/g,"");
41     },
42     //提供遍歷的方法
43     each:function(array,callback){
44          var i,len;
45          //當是遍歷數組或僞數組的時候
46          if(itMei.type(array.length)==="number" && array.length>=0){
47              for(i=0,len=array.length;i<len;i++){
48                    if(callback.call(array[i],i,array[i])===false){
49                         break;
50                    };
51              }
52          }else{
53               //遍歷普通對象
54               for(i in array){
55                     if(callback.call(array[i],i,array[i])===false){
56                         break;
57                     }
58               }
59          }
60     }
61 });
62 
63 //對於遍歷的方法,還有一個each方法,是針對dom元素的遍歷的,對於操做dom元素的方法咱們須要用itMei.fn中的extend方法來擴展
64 itMei.fn.extend({
65      each:function(callback){
66          itMei.each(this,callback);  //使用上面封裝的工具類的each實現遍歷
67          return this;   //返回當前調用方法的實例對象,是爲了實現jquery中的鏈式編程
68      }
69 })

在這裏封裝了8個工具類的方法,以及一個遍歷dom元素的each方法。dom

封裝extend方法在http://www.cnblogs.com/amaya-mei/p/6060466.html中。工具

相關文章
相關標籤/搜索