Согласно MDN
Параметры
arg1, arg2, ... argN
Имена, которые будут использоваться функцией в качестве имен формальных аргументов. Каждый должен быть
строка, которая соответствует действительному
Идентификатор JavaScript или список
такие строки разделяются запятой;
например "x", "theValue" или "a, b" .
Таким образом, список аргументов может состоять из одной или нескольких строк, разделенных запятыми, или только из одной строки, в которой каждый идентификатор разделен запятыми.
Также с
['evt', 'value'].toString() == 'evt,value'
Простая передача массива handler.args
в качестве первого аргумента конструктору new Function
должна работать точно так, как вы хотите
new Function(handler.args, handler.content);
Внутренне, new Function
преобразует каждый аргумент в строку, если он еще не один. Так что, возможно, что-то подобное будет работать
new Function({ toString: function() { return 'a,b,c' } }, 'return a+b+c');
Не то чтобы я предлагал вам сделать что-нибудь глупое, как это.
Это работает во всех браузерах, которые я пробовал, включая IE