我无法创建一个迷你库,其中包含一些我在互联网上找到的有用功能,我想通过在HTML中包含一个文件(如jQuery)来轻松使用它们。
问题是某些变量和函数共享相同的名称并且它们会导致问题。
有没有更好的解决方案,而不是像“bbbb123”那样为vars / funcs赋予疯狂的名字,所以有人使用“bbbb123”var的几率非常低?
答案 0 :(得分:2)
我会将您的所有函数和变量放入库的单个对象中。
var MyLibrary = {
myFunc: function() {
//do stuff
},
myVar: "Foo"
}
在JavaScript中定义“类”有几种不同的方法。 Here是一个很好的页面,其中有3个。
答案 1 :(得分:2)
你应该在全局命名空间中使用一个变量名称,即使用的几率很低,并将其他所有内容放在它下面(在它自己的命名空间中)。
例如,如果我想调用我的库AzureLib:
AzureLib = {
SortSomething: function(arr) {
// do some sorting
},
DoSomethingCool: function(item) {
// do something cool
}
};
// usage (in another JavaScript file or in an HTML <script> tag):
AzureLib.SortSomething(myArray);
答案 2 :(得分:1)
您可以将所有库的功能放在单个对象中。这样,只要该对象的名称不冲突,您就会很好。类似的东西:
var yourLib = {};
yourLib.usefulFunction1 = function(){
..
};
yourLib.usefulFunction2 = function(){
..
};
答案 3 :(得分:1)
是的,您可以将对象创建为命名空间。有几种方法可以做到这一点,语法方面,但最终结果大致相同。你的对象名应该是其他任何人都不会使用的东西。
var MyLibrary = {
myFunc: function() { /* stuff */ }
};
请记住它的对象文字语法,因此您使用label : value
将内容放入其中,而不是var label = value;
。
如果您需要先声明事物,请使用包装函数来封闭环境并保护您免受全局范围的侵害:
var MyLibrary = (function() {
var foo = 'bar';
return {
myFunc: function() { /* stuff */ }
};
})(); // execute this function right away to return your library object