在
JavaScript中,函数只是可以调用的对象.那么函数体引用实际函数对象的最简单方法是什么?
这可以用于引用调用函数(或更具体地,方法)的包含对象.但我相信这从未涉及实际的功能对象本身.
显然,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); });
也可以工作,不会污染命名空间.