The Function class in JavaScript

Most programmers know how to define and use a function in JavaScript. For example the following function displays an alert containing the string passed in as a parameter:

 
function displayAlert(sText) {
  alert(sText);
}
// Then you call it this way
displayAlert("Hello World!");

How many developers, however, know that JavaScript functions are actually objects? Indeed, you can define the previous function using the Function class:

 
var displayAlert = new Function("sText", "alert(sText);");
//...and you call it the same way
displayAlert("Hello World!");

For those who didn’t figure it out, the syntax of the Function class is the following:

 
var functionName = new Function(arg_1, arg_2, ..., arg_n, functionBody);

where arg_i (i = 1,…,n) is the i-th argument and functionBody is (you guessed it) the body of the function. Although you can define functions using the Function class it’s best to avoid it because it’s less performant than the traditional way. Anyway, knowing that even a function is an object is useful because you know you can call on it the valueOf() and toString() methods shared by all objects. However, when called on a function, these two methods return the source code for the function as a string. You can also call the one property defined in ECMAScript which is length. This property returns the number of arguments as defined in the function. For example:

 
function displayAlert(sText) {
  alert(sText);
}
//display an alert containing the number of arguments (in this case 1)
alert(displayAlert.length);