代码之家  ›  专栏  ›  技术社区  ›  Renaud is Not Bill Gates

防止缩小时损坏函数名

  •  0
  • Renaud is Not Bill Gates  · 技术社区  · 6 年前

    我使用GULP UGLIFY ~1.5.4用于我的JavaScript缩写,在文件A中有这个代码: columns[j].colDef.cellRenderer.name === 'dateRenderer' , cellRenderer 是一个函数,所以 cellRenderer.name 将返回该函数的名称。 所以当函数是 dateRenderer() 代码应该返回 true 这不会发生,因为缩小后的功能被破坏。

    我发现了这条线: Make gulp-uglify not mangle only one variable 但我不想告诉丑八怪什么样的变数可以改变而不是,难道没有其他方法可以解决这个问题吗?就像在angularjs中一样,我们使用的是$inject服务。

    1 回复  |  直到 6 年前
        1
  •  2
  •   user9974277    6 年前

    如果你不想把它从混乱中跳过的函数名指定为丑化, 将该函数的名称存储为字符串 .

    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!')
    }