远射:是否可以从被调用的函数中获取调用函数或构造函数的名称?是否可以确定线程的先前功能?
我想从构造函数中调用一些setter函数,让我的setter函数确定它是否是调用它们的构造函数。
目前,我正在为此功能设置一个布尔值,但也许有另一种方式?
public function Constructor(myNumber:Number)
{
this.myNumber = myNumber;
}
public function set myNumber(value:Number):void
{
myNumberProperty = value;
//if constructor called this, return;
//else do some other stuff;
}
答案 0 :(得分:1)
来自liveDocs的引用:
与以前版本的ActionScript不同,ActionScript 3.0没有arguments.caller属性。要获取对调用当前函数的函数的引用,必须将对该函数的引用作为参数传递。可以在arguments.callee的示例中找到此技术的示例。
它在AS2.0中......不幸的是,如果在AS3.0中完成,则会抛出错误。
答案 1 :(得分:0)
从技术上讲,您应该能够通过生成错误并获取其堆栈跟踪来实现此目的。构造函数必须位于该堆栈跟踪上。
try
{
throw new Error();
}
catch (e:Error)
{
// parse this for the constructor name
trace(e.getStackTrace());
}
那将用于检测函数调用的来源......
我仍然会寻求你的解决方案(设置标志),因为它更加明显,而且在性能方面可能要快得多。