ActionScript - 接收调用函数或构造函数的名称?

时间:2010-11-07 09:25:18

标签: actionscript-3 call

远射:是否可以从被调用的函数中获取调用函数或构造函数的名称?是否可以确定线程的先前功能?

我想从构造函数中调用一些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;
     }

2 个答案:

答案 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());
}

那将用于检测函数调用的来源......

我仍然会寻求你的解决方案(设置标志),因为它更加明显,而且在性能方面可能要快得多。