2010-01-01 6 views
3

Essayant difficile de remplacer l'eval sans utiliser le constructeur de la fonction. Stumped. Je ne suis pas un débutant mais pas un expert non plus.Vous voulez éviter eval ET constructeur de la fonction

jslint dit que c'est mal; quand je l'ai remplacé avec un constructeur de fonction, il a dit que c'était juste une forme d'eval()!

evaluateEventScript: function(requestObject) { 
     var resultData; 
     resultData = eval(requestObject.script); 
     //send resultData elsewhere... 
    } 

Aide? Vous ne pouvez pas simplement passer un objet de fonction dans votre scénario?

+3

Quel problème tentez-vous de résoudre? Veuillez clarifier votre question. –

+0

que contient 'requestObject.script'? Je suppose un bloc de JavaScript à exécuter, mais est-ce une fonction, le résultat d'une requête AJAX, etc etc? –

+0

À ce stade, je ne suis pas certain des détails du code JS dans requestObject.script. Il est très probable que ce soit du JSON car il est couramment utilisé dans ce code (dont j'ai juste hérité). – Dave

Répondre

3

par exemple

var c = function(){ 
    ... 
} 


var evaluateEventScript = function(requestObject) { 
    var resultData; 
    resultData = requestObject(); 
    //send resultData elsewhere... 
} 

evaluateEventScript(c); 

Ou quelque chose sous cette forme? cela peut fonctionner sans eval ou constructeur de fonction. mais il requiert que l'objet requestObject soit un objet fonction, et non un String.

+0

> "alors eval est votre premier pari ..." OK donc parfois il est juste d'ignorer le conseil de jslint que eval est diabolique? Beaucoup de sites Web vont jusqu'à dire "il y a presque toujours un moyen d'éviter eval, et vous devriez", mais ils n'expliquent pas comment. Peut-être qu'il est temps d'investir dans un bon livre JS plutôt que de googler pour des réponses. Ce forum est vraiment cool - je suis à la recherche de questions auxquelles je peux répondre, pour redonner. – Dave

+0

Je vais vérifier si je peux utiliser une fermeture ici, comme vous le suggérez. Je serais toujours intéressé par ce que sont les techniques prescrites si je veux juste remplacer l'évaluation par le contexte que j'ai fourni. Merci d'avance. – Dave

+0

@Dave correction, eval est toujours mal. vous avez raison, édité la réponse. –

Questions connexes