Насколько я понимаю, arguments.callee
не устарел в строгом режиме, и в этом случае вы можете продолжать его использовать; скорее это было удалено , и попытка использования вызовет (или должна) вызвать исключение.
Обходной путь - использовать именованные анонимные функции, если вы простите оксюморон. На самом деле я должен сказать "выражения именованных функций" . Пример:
function someFunc(){
return function funcExpressionName(args){
if (this instanceof funcExpressionName) {
// do something
} else
return new funcExpressionName( arguments );
};
}
Имя, которое вы предоставляете, в моем примере funcExpressionName
не должно быть доступно нигде, кроме как внутри функции, к которой оно применяется, но, к сожалению, у IE есть другие идеи (как вы можете видеть, если вы Google это ).
Для примера в вашем вопросе я не уверен, как обработать args.callee
, так как я не знаю, как это устанавливается вызывающей функцией, но использование arguments.callee
будет заменено в соответствии с моим примером .