一、引言
项目开发中,前端会有一个辅助工具类的js文件,比如cookie的操作,团队成员自己封装的方法。大多数时候,我们开发人员自己都是写一个全局函数,不考虑后期维护人员也会写相同的代码,然后造成代码之间的冲突。之前维护的一段代码如下:
var g=function(id){
return document.getElementById(id);
};
var $$=function(id){
return document.getElementById(id);
};
g("testdiv").style.color="red";
$$("testdiv").innerHTML="this is a test.";
因为代码历史久远,也不知道是不是在jQuery出来之前写的呢,还是之后。开发者为了节 省后面写document.getElementById()这个方法,在页面居然用了两个缩写去替代。$$应该后面的开发人员添加进去的,可能他觉得使 用g来代替document.getElementById()不是很明显。这个也说明,在开发过程中,很多开发者为了去大规模修改别人的代码,我们喜欢 在别人代码上添加内容,不想删除内容。这样项目是可以运行了,但是大量冗余代码也产生了,对后期的维护和重构非常的不利。以上只是举个实际项目中例子。
二、实例
后面引入jQuery之后,开发者大多数都喜欢用$来替代。到目前为止,我使用的第三方类 库,基本上没有以$来定义的。所以基本上没有出现过$代表的不是jQuery对象。但是为了代码可维护性,并且在我们写代码中,使用的$是jQuery对 象,我们需要安全进行编写函数。因为有时项目的名字不同,我们还会使用命名空间才区分它们。
(function($){
$.say=function(what){
alert("I say "+what);
}
})(jQuery);
这里我们将jQuery对象传入到函数中,以确保我们在函数内部使用的$是jQuery对象。