有没有办法从当前函数中获取当前函数?

时间:2011-01-11 05:07:31

标签: javascript function

对于这个非常奇怪的标题感到抱歉,但这就是我要做的事情:

var f1 = function (param1, param2) {

    // Is there a way to get an object that is ‘f1’
    // (the current function)?

};

如您所见,我想从匿名函数中访问当前函数。

这可能吗?

4 个答案:

答案 0 :(得分:46)

命名。

var f1 = function fOne() {
    console.log(fOne); //fOne is reference to this function
}
console.log(fOne); //undefined - this is good, fOne does not pollute global context

答案 1 :(得分:28)

是 - arguments.callee是当前的功能。

注意:这在ECMAScript 5中已弃用,可能会导致尾调用递归等性能下降。但是,它在大多数主流浏览器中都有效。

在您的情况下,f1也可以。

答案 2 :(得分:9)

您可以使用f1访问它,因为在调用之前,该函数已被分配给变量f1

var f1 = function () {
    f1(); // Is valid
};

f1(); // The function is called at a later stage

答案 3 :(得分:0)

@amik提及了这一点,但是如果您将函数编写为箭头函数,对我来说似乎更好一些:

const someFunction = () => { 
  console.log(someFunction); // will log this function reference
  return someFunction;
}