gpt4 book ai didi

flash - Actionscript - 获取当前函数的名称

转载 作者:行者123 更新时间:2023-12-03 21:11:48 25 4
gpt4 key购买 nike

我想从该函数内部获取函数的名称。例如。:

function blah() {
//I want to get the string "blah" here, from the function's name
}

或者至少是 Function 对象?

最佳答案

使用arguments.callee获取对当前函数的引用。

我想获取函数名称,这有点棘手:所有函数都被视为方法闭包(可以作为参数传递的代码片段),因此它们不拥有对封闭类类型的引用,也不他们有“当前名称”吗?

但是,如果(且仅当)该方法是公共(public)的,并且您想从包含该方法的实例对象的类声明中获取方法名称,则可以使用 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[m.@name] == callee) return m.@name;
}
return "not found";
}

请注意,当您调用 someFunction() 时,这将不起作用。来自构造函数,因为对象没有完全实例化 - describeType(this)在构造函数中会导致编译错误。

关于flash - Actionscript - 获取当前函数的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4731935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com