Как я могу получить имя функции внутри функции JavaScript? - PullRequest
23 голосов
/ 29 января 2010

Как узнать название функции, в которой я нахожусь?

Приведенный ниже код предупреждает «Объект».Но мне нужно знать, как предупредить «Внешний».

function Outer(){

    alert(typeof this);

}

Ответы [ 3 ]

24 голосов
/ 29 января 2010

Это будет работать:

function test() {
  var z = arguments.callee.name;
  console.log(z);
}
16 голосов
/ 29 января 2010

Я думаю, что вы можете сделать это:

var name = arguments.callee.toString();

Для получения дополнительной информации об этом, посмотрите эту статью .

function callTaker(a,b,c,d,e){
  // arguments properties
  console.log(arguments);
  console.log(arguments.length);
  console.log(arguments.callee);
  console.log(arguments[1]);
  // Function properties
 console.log(callTaker.length);
  console.log(callTaker.caller);
  console.log(arguments.callee.caller);
  console.log(arguments.callee.caller.caller);
  console.log(callTaker.name);
  console.log(callTaker.constructor);
}

function callMaker(){
  callTaker("foo","bar",this,document);
}

function init(){
  callMaker();
}
3 голосов
/ 04 октября 2018

Текущие ответы устарели. Начиная с ES6, вы можете использовать Function.prototype.name. Это дает дополнительное преимущество работы с функциями стрелок, поскольку они не имеют своих собственных объектов аргументов.

function logFuncName() {
  console.log(logFuncName.name);
}

const logFuncName2 = () => {
  console.log(logFuncName2.name);
};
...