最好的方法是避免在单独的.js文件中为javascript函数命名冲突?

时间:2009-08-10 20:31:16

标签: javascript

是否有一种首选方法可以将.js文件中的函数与页面上其他.js文件的潜在冲突隔离开来?

例如,如果你有一个功能

function AddTag(){}
在Core.js中

然后有一个

function AddTag(){}
在Orders.js中

他们会发生冲突。您如何最好地构建.js文件以及您将使用哪些命名约定来隔离它们?

由于

3 个答案:

答案 0 :(得分:20)

我将函数的范围限制为该文件。

(function () {
    var AddTag = function AddTag () {
    };
}());

...有时会使其中的某些功能可用于全局范围:

var thisNamespace = function () {
    var AddTag = function AddTag () {
        …
    };
    var foo = function foo() {
        AddTag();
        …
    };
    var bar = function bar() {
        …
    };
    return {
        foo: foo,
        bar: bar
    }
}();

答案 1 :(得分:7)

您可以使用'命名空间'。喜欢这个

File1.js:

var Orders = {}
(function(o) {
     o.function1 = function() {}
     o.function2 = function() {}
 })(Orders);

File2.js

var Sales = {}
(function(o) {
     o.function1 = function() {}
     o.function2 = function() {}
 })(Sales);

你可以像这样调用它们:

Sales.function1();
Orders.function1();

一般不要使用全局函数/变量。在这里阅读javascript模块模式http://yuiblog.com/blog/2007/06/12/module-pattern/

答案 2 :(得分:0)

使用封装(http://www.devx.com/gethelpon/10MinuteSolution/16467http://nefariousdesigns.co.uk/archive/2006/05/object-oriented-javascript/

在fileA.js中

function fileA()
{
  this.function1 = function()
  {
    return 'foo';
  };

}

在fileB.js

function fileB()
{
  this.function1 = function()
  {
    return 'bar';
  };

}