缩小时eval出错

时间:2012-12-13 06:08:53

标签: jquery minify ajaxmin

我在使用包含'eval'的ajaxmin缩小脚本时遇到错误。在下面的语句中,我收到错误'grid is undefined'。缩小后,变量'grid'已更改为其他名称。我已经解决了这个问题,将网格对象存储在窗口中,如'window.grid'。但还有其他方法可以解决这个问题吗?

        $(form).html($("#" + this._gridID + "_bulkEditTemplate #" + colName + "_bulkEdit").html());           
        $(target).append(form);
        var grid = $find(this._gridID);
        var optionsObj = eval("grid.jsonModeMgr._jsonDataAndOption." + colName + "_Options");
        $("#" + this._gridID + " #" + colName).html($($("#" + this._gridID + "_bulkEditTemplate").tmpl(optionsObj).find('#' + colName + ' option')));
        var editElement = $("#" + this._gridID + " #" + colName);
        $(editElement).val(this.currentCellValue == null ? "" : this.currentCellValue);
        $(editElement).val(this.currentCellValue).focus();
        $(editElement)[0].focus();

由于

1 个答案:

答案 0 :(得分:1)

一般情况下,应尽可能避免使用eval()。您可以替换此eval()行:

var optionsObj = eval("grid.jsonModeMgr._jsonDataAndOption." + colName + "_Options");

用这个:

var optionsObj = grid.jsonModeMgr._jsonDataAndOption[colName + "_Options"];

要通过计算的字符串名称或变量中包含的字符串访问属性,可以使用[string here]语法而不是点语法。