After Effects / ExtendScript Function.caller等效

时间:2016-04-05 15:04:28

标签: javascript extendscript after-effects

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

1 个答案:

答案 0 :(得分:0)

如果你想要正在运行的函数名称(被调用者),你可以使用:

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