2016-04-05 3 views
1

Поскольку ExtendScript, реализованный в After Effects, не поддерживает многие из членов Function, таких как «Function.caller», есть другой известный способ, который позволит вам увидеть имя вызывающей функции, что работает для AE CS5.5 вверх? Как встроенные, так и внешние библиотеки были бы замечательными.After Effects/ExtendScript Function.caller эквивалент

ответ

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); 
} 

Теперь, если мы имеем функцию что вызывается кодом верхнего уровня, таким образом, мы получим нуль, в противном случае мы получаем имя функции вызывающего абонента:

Пример:

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