2009-09-25 6 views
0

Comment obtenir une référence les fonctions getter et setter dans actionscript 3?Référencer les fonctions getter/setter dans actionscript 3

si une méthode est définie sur les appels, par ex.

public function blah():String { ...} 

Je peux obtenir une référence à ce en disant simplement blah ou this.blah

Comment obtenez une référence à

public function get blah2():String {} 
public function set blah2(b:String):void {} 

Merci!

Répondre

2

réponse originale:

Malheureusement, vous ne serez pas en mesure de stocker des références à celles que les fonctions. Les méthodes getter et setter sont en fait construites autour de l'idée que vous ne devriez pas pouvoir et elles fonctionnent donc comme une propriété.

Y a-t-il une raison pour laquelle vous devez référencer spécifiquement les fonctions?


Le commentaire je réponds à:

Je veux ajouter dynamiquement des méthodes d'interface externe basée sur les balises de métadonnées personnalisées, par exemple [Externe]. J'ai été capable de faire cela pour les méthodes habituelles, mais j'essaie d'étendre cela aussi aux getter/setters. Pour ce faire, j'ai besoin d'une référence à la fonction de façon dynamique, donc je peux l'exécuter avec les bons arguments en utilisant la fonction apply.

Je pense que vous feriez mieux d'utiliser une approche en plusieurs étapes dans ce cas. Puisque les getters et les setters fonctionnent comme une propriété et non comme une méthode, il serait logique de tester pour voir s'il s'agit d'une propriété, puis de lui attribuer directement une valeur. Seriez-vous capable d'utiliser ceci:

if(foo.blah2 is Function) 
{ 
    foo.blah2.apply(foo, arr); 
} 
else 
{ 
    foo.blah2 = arr[ 0 ]; 
} 
+0

Je souhaite ajouter dynamiquement des méthodes d'interface externes basées sur des étiquettes de métadonnées personnalisées, par ex. [Externe]. J'ai été capable de faire cela pour les méthodes habituelles, mais j'essaie d'étendre cela aussi aux getter/setters. Pour ce faire, j'ai besoin d'une référence à la fonction de manière dynamique, donc je peux l'exécuter avec les bons arguments en utilisant la fonction apply. – whoisbenli

+0

A nitpick: s'il y a une propriété de 'public function get blah(): Function', ce code produira un résultat indésirable, car la fonction stockée sous' blah' sera appelée. – Vesper

Questions connexes