我已经做了相当多的研究,但对于这个看似简单的问题还没有找到任何答案:
我想将一个属性与一个函数相关联(在这个函数中用作静态变量),如下所示:
function foo() {
if (!foo.counter) {
foo.counter = 1;
}
else {
foo.counter++
}
// rest of the function code goes here...
}
如果我稍后更改函数的名称,我不想在函数定义中更改对它的引用。
那么,有没有办法引用当前正在执行的函数呢? (除了现在已弃用的 arguments.callee
之外)。像 thisFunction
这样的关键字?
如果没有,为什么没有这样的东西?
最佳答案
我不知道 JavaScript 公开了像 thisFunction
(除了 arguments.callee
)这样的标识符或关键字,但是实现相同效果的一种方法是命名在闭包中运行 foo
,并从闭包中返回 foo
。这样一来,您始终可以在 foo
中使用名称 foo
来引用自身,无论您的程序将其分配给什么变量:
var fn = (function() {
function foo() {
if (!foo.counter) {
foo.counter = 1;
}
else {
foo.counter++
}
// rest of the function code goes here...
}
return foo;
})();
关于javascript - 在不使用其名称/arguments.callee 的情况下引用当前函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14059759/