我正在尝试编写调试工具,我希望能够获得调用者的类名。基本上是来电显示。
所以如果我有这样的方法,我想获得类名:
<vector>
在JavaScript或ActionScript3中是否有类似的内容? FYI AS3基于并且在大多数情况下可与JS互换。
答案 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)
与以前版本的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
}