2014-06-24 1 views
0

우리는 JavaScript 코드에서 eval을 사용하지 말아야한다는 것을 여러 곳에서 읽었습니다. 하지만 시나리오가 있는데이를 제거 할 수 없습니다. 그 도움이 필요합니다.특정 시나리오에서 eval() 방지

 var levels=[]; 
     for(var k=0;k<levels.length;k++){ 
      var levelsArray={}; 
      levelsArray["name"]=levels[k].name; 
      levelsArray["caption"]=levels[k].caption; 
      var prop = levels[k].name; 
      eval("levelsArray[\"memberProvider\"]= function (item) { return item." + prop + ";}"); 
      levels.push(levelsArray); 
     } 

희망, 코드는 내가하려는 일에 분명합니다.

답변

4
levelsArray.memberProvider = (function(p) { 
    return function (item) { return item[p]; }; 
})(prop); 
+0

이미 시도했지만 결과는 동일하지 않습니다. 첫 번째 것은 루프에서 값을 개별적으로 작성하여 테스트했기 때문에 올바른 결과를 제공합니다. 'prop'의 값이 항상 마지막 값으로 대체되고있는 것으로 보입니다. –

+0

어떻게'memberProvider()'를 사용합니까? 'item'에는 무엇이 들어 있습니까? –

+0

Infragistics IgniteUI 라이브러리를 사용하고 있습니다. 여기 링크 http://www.igniteui.com/pivot-grid/overview 이것은 라이브러리에 의해 내부적으로 사용됩니다. 깊은 지식이 없으십시오. 지금 시험해보십시오 –

관련 문제