组织我的JavaScript函数库
随着时间的推移,我创建了一系列不同的JavaScript函数。其中大多数是静态函数,可以修改日期的显示、从数组创建选择菜单HTML等 我现在把它们都放在一个名为“general.js”的文件中,该文件由我的HTML页面直接调用,每个文件看起来都像:组织我的JavaScript函数库,javascript,Javascript,随着时间的推移,我创建了一系列不同的JavaScript函数。其中大多数是静态函数,可以修改日期的显示、从数组创建选择菜单HTML等 我现在把它们都放在一个名为“general.js”的文件中,该文件由我的HTML页面直接调用,每个文件看起来都像: function modifyDate(data){....} function makeArray(arr){....} 然后我将它们用作: alert(modifyDate("12/14/2013")); alert(myLibrary.mo
function modifyDate(data){....}
function makeArray(arr){....}
然后我将它们用作:
alert(modifyDate("12/14/2013"));
alert(myLibrary.modifyDate("12/14/2013"));
我认为这是一个坏主意,因为它可能与其他图书馆冲突。相反,我想到的是以下几点:
myLibrary={};
myLibrary.modifyDate= function(data){....}
myLibrary.makeArray= function(arr){....}
他们将其用作:
alert(modifyDate("12/14/2013"));
alert(myLibrary.modifyDate("12/14/2013"));
请注意,我是一种弥补这一点,因为我去。请提供如何最好地组织JavaScript库的建议。谢谢您所描述的名称空间被称为名称空间,通常被认为是一个好主意 有关名称空间的更多讨论,请参见此问题: 通常,名称空间的好处是:
WindowUtils.getHeight
和MenuUtils.getHeight
的结果会有所不同)var myLibrary=(function(){
var privateVariable; //accessible by your functions but not in the global context
return {
modifyDate: function(data){....},
myLibrarymakeArray: function(arr){....}
};
}())
谢谢你,本。有没有关于如何实现名称空间的建议?我只是在谷歌上搜索了“如何实现javascript名称空间”,然后发现了。他们建议使用eval(),这似乎总是个坏主意。关于你的第二个好处,我想我可以使用
myGenericLibrary.mySpecificLibrary.myFunction()
,对吗?@user1032531无需使用eval。当然,如果需要的话,你可以有两个名称空间,尽管很快调用会很烦人。您也可以将其拆分为两个名称空间,或者根本不必担心上下文。让您和他人易于阅读/理解的内容。至于具体的实现,请看我添加的模块模式示例和各种链接。再次感谢Ben,是的,您的示例明确地告诉了我如何实现。您推荐第一种方法(与示例中的方法相同)还是第二种方法(规范博客)?后者更新,在博客上评论的人更多,但这并不一定意味着什么。感谢博客只是列出了模块模式可以实现的一些其他方法。这是相同的概念。无论哪一个例子对你最清楚、最有帮助,你都应该去做。