是否可以从函数内部获取类或类名?

时间:2015-12-31 23:24:40

标签: javascript actionscript-3

我正在尝试编写调试工具,我希望能够获得调用者的类名。基本上是来电显示。

所以如果我有这样的方法,我想获得类名:

<vector>

在JavaScript或ActionScript3中是否有类似的内容? FYI AS3基于并且在大多数情况下可与JS互换。

2 个答案:

答案 0 :(得分:1)

出于调试目的,您可以创建错误,然后检查堆栈跟踪:

var e:Error = new Error();
trace(e.getStackTrace());

给你:

 Error
     at com.xyz::OrderEntry/retrieveData()[/src/com/xyz/OrderEntry.as:995]
     at com.xyz::OrderEntry/init()[/src/com/xyz/OrderEntry.as:200]
     at com.xyz::OrderEntry()[/src/com/xyz/OrderEntry.as:148]

您可以解析&#34;来电者&#34;那里的方法。

请注意,在某些非调试情况下,getStackTrace()可能会返回null

答案 1 :(得分:0)

取自the documentation

  

与以前版本的ActionScript不同,ActionScript 3.0没有   arguments.caller财产。获取对该函数的引用   调用当前函数,你必须传递一个引用   作为一个参数。可以在中找到这种技术的一个例子   arguments.callee的示例。

     

ActionScript 3.0包含推荐的新...(rest)关键字   而不是参数类。

尝试传递Class名称作为参数:

课程代码:

package{

    import flash.utils.getQualifiedClassName;

    public class MyClass {

        public function functionInsideOfMyClass {

            myExternalToTheClassFunction( getQualifiedClassName(this) );

        }

    }

}

外部代码:

public function myExternalToTheClassFunction(classname:String):void {

    trace(classname); // MyClass

}