如何通过参数传递命名函数而不调用它。在Javascript中传递命名函数
现在我唯一的解决方案看起来像一个黑客,但它是通过一个未命名的函数,将调用命名函数。
callback(function(){foo(params);})
有没有更好的方法来做到这一点?
如何通过参数传递命名函数而不调用它。在Javascript中传递命名函数
现在我唯一的解决方案看起来像一个黑客,但它是通过一个未命名的函数,将调用命名函数。
callback(function(){foo(params);})
有没有更好的方法来做到这一点?
,你现在所拥有的代码,它封装在另一个匿名函数调用的是完全正常的,而且是在Javascript中广泛使用的模式。
如果您希望删除匿名函数,则可以使用bind()
方法的函数引用。试试这个:
callback(foo.bind(this, params));
我真的很喜欢这个绑定。它看起来直观而优雅。尽管我担心我的代码可能不太容易理解,或者我并不完全了解后台发生了什么。 从我理解的绑定将只创建一个匿名函数,并将“目标绑定函数”的主体复制粘贴到新的匿名函数。是对的吗?是否有使用bind()的注意事项? –
不,有几种方法可以做到这一点,但你拥有它的方式是最受欢迎的。我知道这感觉很不舒服,但事实就是这样。
你也可以做
callback(foo.bind(this, params));
这是一个演示:http://plnkr.co/edit/RLsp99itBG8PTEbyjZ7A?p=preview –
你也可以通过功能和使用JavaScript在那里回调定义为apply
/call
功能
callback(myFunc);
:
function callback(func, params) {
func.apply(null, params);
}
有关更多详细信息,您可以进入Apply方法d文档中的编号Here
您的函数应该被分配给一个作用域变量。你可以用这个变量传入它。
var func = function(){ foo(params); }
callback(func);
如果你只是想直接调用foo,只是把它传递。
callback(foo);
我想'回调(foo.bind(PARAMS))'会做的工作。 –