Здравствуйте дорогие друзья и давайте перейдем к рассмотрению. И так, конструктор function позволяет создавать динамически новые функции. Самому конструктору передаются три аргумента в виде строки. Первые два аргумента отвечают за параметры а последний за тело функции.
var add = new Function('f','l',"document.write(f+ '*'+ l+'='+(f*l))");
add(10,10);
как видите здесь мы создали функцию add с двумя параметрами 'f' , 'l' и следующим содержимым в ходе которого у нас выведется результат умножения двух чисел.
Хочу отметить что с помощью данного конструктора мы можем не только создавать новые функции, но и переопределять их.
function add(a, b){
document.write(a+ "+" + b + "=" +(a+b));
}
var add = new Function('f','l',"document.write(f+ '*'+ l+'=' + (f*l))");
add(7,7);
в данном примере функция add осуществляла сложение двух аргументов, после использования конструктора она перемножает их.
var add = new Function('f','l',"document.write(f+ '*'+ l+'=' + (f*l))");
var add = new Function('f','l',"document.write(f+ '-'+ l+'=' + (f-l))");
add(15,5);
а здесь мы переопределили динамически созданную функцию конструктора.
Общую суть использования данного конструктора я думаю вы уловили.
Теперь поговорим про передачу аргументов. Честно сказать я немного слукавил когда сказал что в конструкторе можно определять только два аргумента для функции.
Их можно определять сколько угодно или вообще не указывать:
var add = new Function("document.write('Привет мир')");
add();
здесь мы сгенерировали функцию без аргументов.
var add = new Function('a','b','c','d',"document.write(a+b+c+d)");
add(5,10,15,20);
а тут указали целых четыре аргумента. Конечно при большом количестве аргументов такая запись будет не очень удобной. Поэтому мы можем указать так:
var add = new Function("...args","document.write(args[0]+args[1]+args[2]+args[3])");
add(5,10,15,20);
как видите для перечисления всех аргументов args мы воспользовались оператором расширения '...'.
Ничто не мешает нам задавать аргументу дефолтное значение:
var add = new Function("a","b = 2","document.write(a*b)");
add(5);
если мы функции add передаем единственное значение, то оно умножается на два.
var add = new Function("a","b = 2","document.write(a*b)");
add(5,10);
здесь же мы добавили второй параметр и в результате чего теперь первый аргумент умножается на второй.
Вот в принципе и все что я хотел рассказать вам про данный конструктор. Надеюсь данная информация была для вас полезна и вы не раз еще ею воспользуетесь.
Желаю удачи и успехов! Пока!