2009-07-29 8 views
0

J'ai un objet JavaScript qui ressemble à ce qui suit:JavaScript: Conversion de la chaîne à la valeur de la variable prédéfinie

venue = function(map, dataSet) { 
    // set some constants 
    this.VENUE_ID = 0; 
    this.VENUE_NAME = 1; 
    this.VENUE_CITY = 2; 

    this.filterBy = function(field, value) { 
     ... 
     var filterValue = 'parent.VENUE_' + field; 
    } 
} 

Maintenant, le problème est que je dois la valeur de filterValue pour contenir la valeur de la constante l'objet parent. Actuellement, j'ai essayé d'utiliser la méthode ci-dessus, puis de référencer filterValue lorsque j'essaie d'accéder à l'élément de tableau, mais cela renvoie simplement undefined. Comment convertir la variable filterValue en la valeur de la constante qu'elle représente?

Répondre

3

Cela n'a rien à voir avec la portée variable.

var filterValue = this['VENUE_' + field]; 

le ferait.

1

Essayez ceci:

var filterValue = this['VENUE_' + field]; 
2

JavaScript n'a pas de concept de 'parent'. Et je pense que vous confondez la portée et le contexte. Si cette méthode était écrite en tant que var filterBy(), vous devriez y accéder dans une 'portée' différente. Mais en utilisant 'ceci', vous avez conservé le même objet que celui qui a été écrit. Donc tout ce que vous avez écrit est dans "ce" contexte.

+0

Ah je vois! Eh bien merci, je n'en avais aucune idée. J'avais manuellement réglé le parent à 'ceci' extérieurement à chaque fonction jusqu'à ce point. Je pense que la raison était quelque chose à voir avec l'utilisation de fonctions comme callbacks. – tombazza