扩展jquery中的工具类方法

在这里我利用之前封装好的extend方法来扩展jquery中的工具类的一些方法,比如isNumberic、isArray、type等方法。下面写的代码都会在(function(window){ //代码 })(window)中

在这里我创建一个对象(class2type)用于存储表示数据类型的字符串的小写格式。

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方法。

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