A.as :
public class A {
public function getFunction():Function {
return function():void {
if(this is C) {
trace("C");
} else {
trace("not C");
}
}
}
public function func1():void {
var internalFunc:Function = getFunction();
internalFunc();
}
}
B.as :
public class B extends A implements C {
}
Dans une autre classe:POO Comprendre en Actionscript
var b:B = new B();
B.func1();
sortie est: "Non C"
Je me attendais à la sortie de trace être
"C"
Quelqu'un peut-il expliquer pourquoi?
Son exemple de code n'a pas de fonction anonyme, cependant. Voici un bon article sur les fonctions anonymes dans Flex: http://www.darronschall.com/weblog/2004/08/anonymous-inline-and-named-functions-in-actionscript.cfm – JeffryHouser
Les membres d'instance seront disponibles seulement si vous assignez 'this' à une variable locale dans la fonction englobante, non? Sinon, avec 'this' pointant vers global, que feriez-vous pour s'y référer? – Amarghosh
@ www.Flextras.com: Voir le commentaire d'Amarghosh à votre réponse. – back2dos