日期:2014-05-16  浏览次数:20309 次

eval无法通过google closure compiler的问题
在用google closure compiler编译JS文件时发现eval无法通过,有谁知道怎么解决这个问题啊?
下面为要用closure compiler编译的测试JS代码,详细见资源文件。
JScript code

(function(){
    var Effects = window.Effects = function(){
        var transTotal = 10;
        this.transition = function (maskID, maskTime){
            if (maskID <= transTotal) {
                var maskFunName = "mask" + maskID;
                eval(maskFunName)(maskTime);
                
                //这里因为使用了eval方法所以造成无法通过google closure compiler编译,如何才能使编译正常通过?
                
            } else {
                mask1(maskTime);
            }
        }
        function mask1(maskTime) {
            alert("mask1: " + maskTime);
        }
        function mask2(maskTime) {
            alert("mask2: " + maskTime);
        }
        function mask3(maskTime) {
            alert("mask3: " + maskTime);
        }
        
        /*
             .
             .
            .
               ...下面还有很多mask函数.
        */
       
    };
})();

var masker = new Effects();
masker.transition(3, 2);
masker.transition(30, 8);



------解决方案--------------------
探讨

大哥你试过没,怎么按你说的这样我这还是不行啊?引用:

把eval(maskFunName)(maskTime);

换成
var fn = eval(maskFunName);
fn(maskTime);