The function constructor can be called with the new operator or as a function.
The initial value of Function.prototype.constructor is the built-in Function constructor.
The arguments supplied to the Function() constructor are all assumed to be parameters apart from the last one which is taken to be the body Source Script Text. If there is only one argument, then that is taken to be the body of the function.
If there are no arguments, an empty function is created.
Note that it is permissible but not necessary to have a separate argument for each formal parameter. All three of these examples produce exactly the same result:
new Function("a", "b", "c", "return a+b+c")
new Function("a, b, c", "return a+b+c")
new Function("a, b", "c", "return a+b+c")
A prototype property is automatically created in case the function object is used as a constructor at some future time.
ECMA 262 edition 2 - section - 22.214.171.124
ECMA 262 edition 2 - section - 15.3.1
ECMA 262 edition 2 - section - 126.96.36.199
ECMA 262 edition 3 - section - 15.3.2