Передача именованной функции в Javascript
Как вы передаете именованную функцию с параметрами, не вызывая ее.
Прямо сейчас единственное решение, которое у меня есть, похоже на взлом, но это передача безымянной функции, которая будет вызывать названную функцию.
callback(function(){foo(params);})
Есть ли лучший способ сделать это?
4 ответа
Код, который у вас есть сейчас, который упаковывает вызов в другую анонимную функцию, прекрасно подходит и широко используется в Javascript.
Если вы хотите удалить анонимную функцию, вы можете вместо этого использовать ссылку на функцию с bind()
метод. Попробуй это:
callback(foo.bind(this, params));
Нет, есть несколько способов сделать это, но способ, которым вы пользуетесь, является самым популярным. Я знаю, что это кажется хакерским, но так оно и есть.
Вы могли бы также сделать
callback(foo.bind(this, params));
Ваша функция должна быть назначена переменной области видимости. Вы можете передать его с помощью этой переменной.
var func = function(){ foo(params); }
callback(func);
Если вы просто пытались вызвать foo напрямую, просто передайте это.
callback(foo);
Вы также можете просто передать функцию и использовать Javascript apply
/ call
функции
callback(myFunc);
где обратный вызов определяется как:
function callback(func, params) {
func.apply(null, params);
}
Для получения более подробной информации вы можете перейти к документации метода Apply в MDN.