jQuery如此庞大的js库,要系统的管理肯定是要用到面向对象的,不然代码的可阅读性太差,后期维护升级会很不友好。
在jQuery中,是将所有的工具方法以对象的形式写在jQuery.extend({…})中调用,我们可以仿照:
dQuery.extend({
//判断方法
isFunction : function(sel){
return typeof sel === "function";
},
//封装判断字符串和代码片段的方法
isString : function(str){
return typeof str === "string";
},
isHtml : function(str){
return str.charAt(0) == "<" &&
str.charAt(str.length-1) == ">" &&
str.length >=3
},
//封装判断对象 数组 window的方法
isObject : function(sel){
return typeof sel === "object"
},
isWindow : function (sel){
return sel === window;
},
isArray : function(sel){
if(dQuery.isObject(sel)&&
!dQuery.isWindow(sel)&&
"length" in sel){
return true;
}
return false;
},
//去除传入字符串的空格
trim : function (str){
if(!dQuery.isString(str)){
return str;
}
if(str.trim){
return str.trim();
}else{
return str.replace(/^\s+|\s+$/g,"")
}
}
})
当然,我们就需要定义extend()方法:
//采用这种方式既可通过类调用添加静态方法 例如:dQuery.extend({}),
//也可通过对象调用添加实例方法 例如:var a = new dQuery(); a.extend({})
dQuery.extend = dQuery.prototype.extend = function (obj){
for(var key in obj){
this[key] = obj[key];
}
}
采用这样的方式,之后再添加任何方法就可以直接往dQuery.extend({})中添加。