我正在使用gulp-uglify〜1.5.4进行javascript压缩,在文件中包含以下代码:columns[j].colDef.cellRenderer.name === 'dateRenderer'
,cellRenderer
是一个函数,因此cellRenderer.name
将返回该函数的名称。
因此,当函数为dateRenderer()
时,该代码应返回true
,这不会发生,因为在缩小之后,该函数被弄乱了。
我找到了这个线程:Make gulp-uglify not mangle only one variable,但是我不想告诉uglify要修改哪些变量,而不是,没有其他方法可以解决这个问题吗?像在AngularJS中一样,我们使用$ inject服务。
最佳答案
如果不想指定给uglifyjs,它应该从处理中跳过什么函数名,请将该函数名存储为字符串。
function dateRenderer() {
// do something useful
}
dateRenderer.rendererName = 'dateRenderer'
// later ...
var fn = dateRenderer
if (fn.rendererName === 'dateRenderer') {
console.log('ok!')
}
...或在调用该特定函数后设置其名称:
function dateRenderer() {
dateRenderer.rendererName = 'dateRenderer'
// do something useful
}
// later ...
var fn = dateRenderer
// do something
dateRenderer()
if (fn.rendererName === 'dateRenderer') {
console.log('ok!')
}