В том то и штука, что менять уже существующий конструктор нежелательно (так как это приведет к изменению большого по объему рабочего кода, который уже отлажен). Моё решение выглядит так:
var jsCode = "var res = new "+type+"(args[0]";
or(var i=1;i<args.length;i++)
jsCode += ",args["+i+"]";
eval(jsCode+");");
return res;
Это всё сделано в виде отдельной функции, в которую передаются параметры: type и args.
Работает вроде правильно.
P.S. Может есть какие-то ньюансы в каком-то браузере? А то я только в FF3.5 тестил?