我自己的迷你框架与某些项目不兼容

时间:2011-10-31 17:08:40

标签: javascript compatibility

我无法创建一个迷你库,其中包含一些我在互联网上找到的有用功能,我想通过在HTML中包含一个文件(如jQuery)来轻松使用它们。

问题是某些变量和函数共享相同的名称并且它们会导致问题。

有没有更好的解决方案,而不是像“bbbb123”那样为vars / funcs赋予疯狂的名字,所以有人使用“bbbb123”var的几率非常低?

4 个答案:

答案 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