如何通過參數傳遞命名函數而不調用它。在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))'會做的工作。 –