1

我正在设计一个 API,它要求我的用户从我的服务器下载一个 javascript 文件,然后将其加载到他们的页面上。在这个文件中有一个函数调用 generic(),如果我的用户包含这个 js,并且由于某种原因他们的页面上有一个 js,其中还有另一个函数调用 generic(),这将代表一个问题。我不是前端开发人员,我知道使用 php 可以解决这个问题,创建一个类并将所有函数放入其中,所以你可以像 $myclass->myfunction(); 一样调用它们,但是我如何在 js 上解决这个问题?这甚至是 js 的好方法吗?(请不要使用jquery。)

4

3 回答 3

5

您显然总是必须在全局范围内公开至少一个标识符,但一种常见的方法是将所有内容包装在一个立即调用的函数表达式中:

var YourNamespace = (function () {

    var privateData = 10; // Not accessible outside the IIFE

    // Expose public properties (these functions can access the private data)
    return {
        someMethod: function () {
            // Do stuff
        },
        anotherMethod: function () {
            // More stuff
        }
    };

}());

这会将单个标识符 ,YourNamespace作为具有可用作方法的属性的对象公开。你可以像这样使用它:

YourNamespace.someMethod();
于 2013-05-10T10:25:49.440 回答
0

将您的代码包装在包装对象/或函数中。

var MyLibrary = {
    global1: 123,
    global2: 'abc',
    doSomething: function(a){
        // ...
    },
    somethingElse: function(b){}
};
于 2013-05-10T10:26:18.130 回答
0

如果你正在寻找EncapsulationJavascript那么你正在寻找Closures

于 2013-05-10T10:33:25.277 回答