Use arguments.callee para obtener una referencia a la función actual.
Si desea obtener el nombre de la función, es un poco más complicado: todas las funciones se tratan como cierres de métodos (fragmentos de código que pueden transmitirse como argumento), por lo que no poseen una referencia a un adjunto tipo de clase, ni tienen un "nombre actual".
Sin embargo, si (y única si) el método es pública, y que desea obtener el nombre del método de la declaración de la clase de un objeto de instancia que contiene el método, puede utilizar describeType:
public function someFunction() : void {
var callee:Function = arguments.callee;
trace (getFunctionName(callee, this)); // ==> someFunction
}
private function someOtherFunction() : void {
var callee:Function = arguments.callee;
trace (getFunctionName(callee, this)); // ==> not found
}
private function getFunctionName (callee:Function, parent:Object):String {
for each (var m:XML in describeType(parent)..method) {
if (parent[[email protected]] == callee) return [email protected];
}
return "not found";
}
Tenga en cuenta que esto no funcionaría cuando llame al someFunction()
desde un constructor, porque el objeto no está completamente instanciado: describeType(this)
en un constructor causaría un error de compilación.
nota rápida: si quieres poder usar esto de otra clase, tienes que reemplazar 'this [m. @ Name]' con 'parent [m. @ Name]' –
Eso fue en realidad un error. Gracias por llamar mi atención, @kriswelsh – weltraumpirat