在這裏我利用以前封裝好的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中。工具