2

我有类似这样的代码:

(function (global) {
    var MyObject = function (arg1, arg2) {
        this.publicVar = arg1;
        this._internalVar = arg2;
    };
    MyObject.prototype = {
        publicFunc: function (param) {
            return param + this._internalVar;
        }
    };
    global.MyObject = MyObject;
}(window));

我可以以某种方式让 UgilfyJS 破坏,_internalVar因为它不打算在这个范围之外使用吗?我知道它可以通过使用高级压缩等的闭包编译器来完成,但我使用 anvil 来构建和 uglifyjs 来缩小。

4

1 回答 1

2

为了保护 _internalVar ,我尝试了

(function (global) {

    var MyObject = function () {};

    MyObject.prototype = (function(){     

        var _internalVar = 2;        

        return {
             publicVar: 1,             
             publicFunc: function (param) {
                return param +' '+ _internalVar;
            }
        };

    })();

    global.MyObject  = MyObject;

}(window));

并试图访问

console.log(  ( new window.MyObject()).publicVar  );

哪个打印1

console.log(  ( new window.MyObject())._internalVar  );

这是undefined

console.log( ( new window.MyObject()).publicFunc('value') );

哪个打印值 2

有关更多信息,请查看http://addyosmani.com/resources/essentialjsdesignpatterns/book/#modulepatternjavascript

于 2013-03-06T11:16:35.367 回答