在 JavaScript 中,函数只是可以调用的对象。那么函数体引用实际函数对象的最简单方法是什么?
this
可用于引用调用函数(或更具体地说,方法)的包含对象。但我相信 this
永远不会指代实际的函数对象本身。
显然,bind
、call
或 apply
可用于更改 this
的值功能。或者 bind
可用于创建函数的一个版本,该版本始终将对自身的引用作为其第一个参数。
但是有没有更简单的方法呢?我怀疑不是,但我可能是错的。
最佳答案
我想不出命名函数表达式不能替代匿名函数表达式的情况。因此,如果您要从其内部调用它(即,如果您要使用递归),我建议命名该函数:
function myFunc(someArg) {
...
...
myFunc(someNewArg);
}
即使它是一个引用也能工作:
var myFunc = function(someArg) {
...
}
如果不想污染命名空间,甚至可以使用递归 IIFE(立即调用的函数表达式):
(function myFunc(arg) {
...
myFunc(someOtherArg);
})(0); //some initial value
此外,做这样的事情:
someOtherFunction(function myFunc(arg) {
...
myFunc(otherArg);
});
同样有效,不会污染命名空间。
关于javascript - 函数自引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26283868/