1

我需要为当前项目编写和管理大量 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 代码?以及如何隐藏我不想让外部访问的功能?

4

2 回答 2

3

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

  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();
    
            // ...
        });
    }
    
于 2012-05-11T08:19:53.633 回答
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.
于 2012-05-11T08:15:55.103 回答