After Effects / ExtendScript Function.caller 等效

After Effects / ExtendScript Function.caller equivalent

由于在 After Effects 中实现的 ExtendScript 似乎不支持许多函数成员,例如 "Function.caller",是否有另一种已知方法可以让您看到调用函数的名称,适用于 AE CS5。 5以上?内置或外部库都很棒。

如果你想要 运行 函数名(被调用者),你可以这样做:

arguments.callee.name

示例:

function someFuncName() {
    $.write(arguments.callee.name);
}
someFuncName();
//Result: someFuncName

在您的情况下(您需要调用函数名称),ExtendScript 没有执行此操作的内置函数,因此您需要创建一个:

function caller() {
    var stack = $.stack.split('\n');
    return stack.length === 4 ? null : stack[stack.length - 4].slice(0, -2);
}

现在,如果我们有一个由顶层代码调用的函数,那么我们将得到 null,否则我们将得到调用函数名称:

示例:

function someFuncName() {
    $.write(caller());
}
function callerFuncName() {
    someFuncName();
}
callerFuncName(); //Result: callerFuncName
someFuncName(); //Result: null