私有范围Javascript的最佳方法?

私有范围Javascript的最佳方法?,javascript,Javascript,我目前正在JQuery的文档中编写特定页面的所有javascript功能。ready处理程序: $(document).ready(function() { var one, two, three; function f1(par1) {} function f2() {} ... }); 我觉得这不是最优的,或者根据Javascript最佳实践。我需要的是页面功能的私有范围,无需外部调用 我看到了许多不同的方法: 以窗口作为参数自调用的函数,然后在其上

我目前正在JQuery的
文档中编写特定页面的所有javascript功能。ready
处理程序:

$(document).ready(function() {
    var one, two, three;
    function f1(par1) {}
    function f2() {}
        ...
});
我觉得这不是最优的,或者根据Javascript最佳实践。我需要的是页面功能的私有范围,无需外部调用

我看到了许多不同的方法: 以
窗口
作为参数自调用的函数,然后在其上设置应用程序的
功能
对象

与jQuery的功能非常相似,但通过使自调用函数首先返回某些内容,间接地在
窗口上设置functionality对象

创建一个局部变量(而不是在
窗口
),并在自调用函数中设置其内容(为什么?)

与前面的内容基本相同,但是设置内容时没有自调用函数(同样,为什么要使用或不使用自调用函数?)


所以哪种方式最好?我建议使用模块模式,将页面视为模块。web上有很多关于javascript模块模式的信息。看一看

我使用了中的一个示例,并对其进行了一些修改:

var MyApp = MyApp || {};
MyApp.PageX = (function () {
    var my = {},
        privateVariable = 1;

    function privateMethod() {
        // ...
    }

    my.moduleProperty = 1;
    my.moduleMethod = function () {
        // ...
    };

    return my;
}());
这里发生的事情是,定义了一组属性和方法,并将其命名为
MyApp.PageX
MyApp
作为全局。因此,这将起作用:

MyApp.PageX.moduleProperty; // 1
MyApp.PageX.moduleMethod();

对于私有功能,您是指仅在特定页面上运行/查看的功能吗?@TJ是的,是javascript在页面的生命周期内控制页面,但页面上的其他javascript不应访问该功能。
var functionality = {};
(function(obj) { obj.f1 = ... }(functionality));
var functionality = { 
    f1: function(){}, 
    f2: function(){}
}
var MyApp = MyApp || {};
MyApp.PageX = (function () {
    var my = {},
        privateVariable = 1;

    function privateMethod() {
        // ...
    }

    my.moduleProperty = 1;
    my.moduleMethod = function () {
        // ...
    };

    return my;
}());
MyApp.PageX.moduleProperty; // 1
MyApp.PageX.moduleMethod();