J'ai ce morceau de code:String.replace; remplacer par des problèmes de résultat de la fonction
var myObj = function() {
this.complex = function (text) { /* long piece of code */ }
this.parse(text) {
return text.replace(/valid_pattern/gi, function ($1) { return this.complex($1); });
}
}
Bien sûr appeler this.complex (1 $) ne fera pas l'affaire, parce que je suis dans le cadre de la fonction anonyme . Je ne peux pas non plus modifier la fonction anonyme en utilisant l'instruction .call (this), car dans le cas où je perdrais les paramètres passés à la fonction par String.replace. Jusqu'à présent, j'utilise l'instance concrète de l'objet. Ceci est ma solution:
var instance = new myObj;
var myObj = function() {
this.complex = function (text) { /* long piece of code */ }
this.parse(text) {
return text.replace(/valid_pattern/gi, function ($1) { return instance.complex($1); });
}
}
Jusqu'à présent, il est suffisant pour mes besoins, mais je me demande s'il y a une solution universelle à ce problème. La seule idée qui a fonctionné pour moi jusqu'ici est la suivante:
function ($1) { return (new myObj).complex($1); }
... qui souffre de sérieux problèmes de performance. Toutes les idées seraient grandement appréciées.
- D.
P. S. Désolé mon anglais, ce n'est pas ma langue maternelle.
Votre code n'a pas de sens! L'analyse est-elle censée être une fonction? – James