Javascript 使用UglifyJS(早午餐)压缩Object.prototype.functions
我最近从使用手写编译脚本和Google闭包编译器转向使用早午餐,在那里我或多或少地被迫使用UglifyJS 我有配置选项Javascript 使用UglifyJS(早午餐)压缩Object.prototype.functions,javascript,html,uglifyjs,brunch,Javascript,Html,Uglifyjs,Brunch,我最近从使用手写编译脚本和Google闭包编译器转向使用早午餐,在那里我或多或少地被迫使用UglifyJS 我有配置选项 uglify: mangle: toplevel: true eval: true functions: true compress: true 我的类使用原型风格的构建 即 然后(c在全局范围内,只调用一次) 添加toplevel:true配置选项会损坏汽车,但原型功能(即startEngine)都不会损坏 我不想改变我的类结构,但是我能
uglify:
mangle:
toplevel: true
eval: true
functions: true
compress: true
我的类使用原型风格的构建
即
然后(c在全局范围内,只调用一次)
添加toplevel:true配置选项会损坏汽车,但原型功能(即startEngine)都不会损坏
我不想改变我的类结构,但是我能让UglifyJS破坏这些函数名吗
谢谢:)丑八怪没有能力破坏对象属性。但是,通过切换到带变量的括号表示法,您可能能够更接近您所要查找的内容
function Car() { }
var startEngine = 'startEngine'; // could actually be any random string or number
Car.prototype[startEngine] = function() { }
var c = new Car();
car[startEngine]();
这取决于您的第一个代码段和第二个代码段都可以访问startEngine
变量,因此根据您的项目结构,您可能必须以等效的方式重新声明变量,或者想出其他创造性的方法来跨范围保留其值
上的答案提供了更详细的解释。是的,现在您可以。您只需要稍微修改一下代码。 看我的
var c = new Car();
car.startEngine();
function Car() { }
var startEngine = 'startEngine'; // could actually be any random string or number
Car.prototype[startEngine] = function() { }
var c = new Car();
car[startEngine]();