如何在javascript模块中创建可混淆的变量和函数?

如何在javascript模块中创建可混淆的变量和函数?,javascript,module,obfuscation,Javascript,Module,Obfuscation,我有一组js文件,在编译时连接成一个唯一的文件,然后在上面运行YUI压缩程序(都在maven下) 不幸的是,文件的内容没有被混淆。就好像所有声明的变量和方法都被认为是公共的(因此不容易混淆) 例如a.js使用b.js中声明的方法。连接文件的内容为: (function() { // b.js' content... // a.js' content... (function() { // Some var and methods of a decla

我有一组js文件,在编译时连接成一个唯一的文件,然后在上面运行YUI压缩程序(都在maven下)

不幸的是,文件的内容没有被混淆。就好像所有声明的变量和方法都被认为是公共的(因此不容易混淆)

例如
a.js
使用
b.js
中声明的方法。连接文件的内容为:

(function() {

    // b.js' content...

    // a.js' content...
    (function() {

        // Some var and methods of a declared here

        $(document).ready(function(){

            // Calls some a.js and b.js methods
            ...

        });

    })();

})();
b.js
的函数和变量在
b.js
文件中定义如下:

var B1 = "Some text";
var B2 = "More text";
...

function MyPrivateMethod1() { ... };
function MyPrivateMethod2() { ... };
a.js
的方法是模糊的,但
b.js
的方法是模糊的。我可以看到
B1
B2
MyPrivateMethod1
MyPrivateMethod1
。。。在连接的文件中,我找不到
a.js
的变量和方法(名称已被混淆)


如何在连接的文件中混淆
b.js
的var和方法?(REM:我需要将
b.js
作为一个单独的文件保存)。

我找到了一个解决方案,但我不确定它是否是最好的。我在函数中移动了
b.js
的代码:

var dummy = function() {

    var B1 = "Some text";
    var B2 = "More text";
    ...

    var MyPrivateMethod1 = function() { ... };
    var MyPrivateMethod1 = function() { ... };
    ...

    function MyPublicMethod1() { ... };
    function MyPublicMethod2() { ... };
    ...

}

出于好奇:为什么要混淆?为什么不将a.js和b.js的内容打包到一个闭包中,或者使用名称间隔模式来处理全局变量?@RoToRa-@Wojciech如何将a.js和b.js的内容打包到一个闭包中?(对不起,我还是Javascript新手)@RoToRa我想让那些想保留一些代码的人感到痛苦,我可以为可读性付出代价。