Использовать .apply
func.apply(null, args)
Если вам нужно привязать к определенной области, вы можете передать другой аргумент для использования в качестве this
внутри функции:
func.apply(scope, args);
Также нюанс JavaScript в том, что вы можете вызывать функции с неопределенными значениями. Поэтому небольшая подстройка к существующему коду будет работать в 95% всех случаев (это не предлагается в качестве решения, просто указав на это):
// will handle any number of args up to 7
function callListenerWithArgs(func, args){
func(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
}
Если ваш func
определен как:
function foo(a, b, c){
}
вы получаете a
, b
, c
, а также некоторые undefined
значения, которые игнорируются. Как я уже говорил выше, это работает в 95% случаев. Это не сработает, если вы когда-либо проверите arguments.length
в вызываемой функции, поскольку она всегда будет одинаковой, независимо от количества параметров, определяемых функцией.