Je continue mes périgrinations sur le Wiki de FlashCoders, et voila t-y pas que je tombe sur la propriété non documentés __resolve : http://chattyfig.figleaf.com/flashcoders-wiki/index.php?__resolve. Cette propriété permet d'éxecuter une action lorsque qu'une méthode ou une propriété est appelée alors qu'elle n'existe pas. La valeur retournée par __resolve est alors utilisée à la place.
En fait, les exemples qui sont données ne me satisfont pas du tout !!! Tout d'abord pour un problème évident de ciblage. Mais je pense que les deux premiers exemples ne sont destinés qu'à faire comprendre son fonctionnement, sans compliquer l'exemple avec le ciblage. Le troisème exemple est assez simple, donc ne donne pas plus d'infos sur le ciblage et sur la gestion des chaines de prototypes.

Aprés quelques tests, il apparait que __resolve est une méthode comme les autres, possédant le même this qu'un méthode normale. En gros, utilisée dans un prototype, le this ne vas pas pointer vers le prototype du constructeur, mais bien vers l'instance elle-même. En fait, le test de la non-existence de la propriété ou méthode se fait d'abord dans toute la chaine de prototypes, puis, l'appel se fait dans l'ordre d'appel des méthodes (instance, puis prototype, puis prototype parent, etc...). Tout ca pour dire qu'un __resolve créé dans une instance ne va pas s'éxecuter si la méthode existe dans le prototype (heureusement) ... :D
Un des inconvénients majeurs est que l'on ne peut pas savoir s'il s'agit d'un appel à une méthode, ou seulement d'un appel à une propriété. Il faudrait au moins qu'on puisse savoir si l'opérateur "parenthèses" (appel à une fonction) est utilisé ...
[asfile]resolve.as[/asfile]