如何管理javascript文件并封装JavaScript / jQuery函数

时间:2012-05-11 08:14:13

标签: javascript jquery

我需要写&管理当前项目的大量JavaScript代码。

我将它们分成多个主要基于模块的.js文件。

所以,现在我有了例如:

Map.js // deal with google map issue
Common.js // common functions that will share by all modules
User.js // user module js code
Geofence.js // geofence module js code
etc.....

例如,在我的User.js文件中

如果我想声明一个仅在User.js文件中使用但外部无法访问的函数,该怎么办?我该怎么办?

var User = {};

User.registerModule = function () {
    $('#user').click(function () {
        Common.showLeftScrollbar();

        getAllUsers();

        // ...
    });
}

function getAllUsers(){ // how to hide this function
    // get
    return users;
}

因此,在我的主页中,我只需要与多个.js文件进行协调。访问允许访问的内容。

  $(document).ready(function (data) {

        GoogleMap.initialiseGoogleMap();

        Common.refreshRightScrollbar();

        User.registerModule();

        // ...
    });

这是我第一次写js而没有足够的时间来学习整本书。那么,在您看来,请问这个结构是否可以使用许多js代码?以及如何隐藏我不想在外面访问的功能?

2 个答案:

答案 0 :(得分:2)

隐藏该功能,你有不同的可能性

  1. 将您的代码放在一个直接的自执行匿名函数

    var User = {}; // this should not be enclosed too
    
    (function() {
        User.registerModule = function () {
            $('#user').click(function () {
                Common.showLeftScrollbar();
    
                getAllUsers();
    
                // ...
            });
        }
    
        function getAllUsers(){ // how to hide this function
            // get
            return users;
        }
    })();
    
  2. 将该函数包含在User.registerModule函数

    User.registerModule = function () {
        function getAllUsers() { ... }
    
        $('#user').click(function () {
            Common.showLeftScrollbar();
    
            getAllUsers();
    
            // ...
        });
    }
    

答案 1 :(得分:1)

将此功能放在范围内:

User.registerModule = function () {
    function getAllUsers(){ // how to hide this function
        // get
        return users;
    }
    $('#user').click(function () {
        Common.showLeftScrollbar();

        getAllUsers(); // returns users

        // ...
    });
}

它将是私人

现在,如果你试图在外面调用这个函数,它将是undefined

getAllUsers(); // undefined.